2016-05-08 174 views
2

我有以下数据帧选择第一行中的值在大熊猫数据帧

    AAPL   F  IBM 
    Date    
    2016-05-02 46.536664 13.62 143.881476 
    2016-05-03 47.302004 13.43 142.752373 
    2016-05-04 46.810001 13.31 142.871221 
    2016-05-05 46.619999 13.32 145.070003 
    2016-05-06 46.360000 13.44 147.289993 

我倒是喜欢由100至除以所述第一行和所述乘法的值每列中的计算之后,前2行应该是这样的:

   AAPL   F  IBM 
    Date 
    2016-05-02 100   100  100 
    2016-05-03 101.63  98.60  99.21 

我很挣扎,但我无法得到它。任何帮助表示赞赏

回答

4

尝试这样:

df /= df.iloc[0]/100 

df = df.apply(lambda x: x/x.iloc[0]*100) 

测试:

In [51]: df 
Out[51]: 
       AAPL  F   IBM 
Date 
2016-05-02 46.536664 13.62 143.881476 
2016-05-03 47.302004 13.43 142.752373 
2016-05-04 46.810001 13.31 142.871221 
2016-05-05 46.619999 13.32 145.070003 
2016-05-06 46.360000 13.44 147.289993 

输出方式:

In [63]: df /= df.iloc[0]/100 

In [64]: df 
Out[64]: 
        AAPL   F   IBM 
Date 
2016-05-02 100.000000 100.000000 100.000000 
2016-05-03 101.644596 98.604993 99.215255 
2016-05-04 100.587358 97.723935 99.297856 
2016-05-05 100.179074 97.797357 100.826046 
2016-05-06 99.620377 98.678414 102.368976 
+0

它似乎没有工作。我收到以下消息: TypeError :(“不能在”,'在索引AAPL'处发生索引索引) – vsoler

+0

@vsoler,我已经更新了我的答案 - 将'.loc'更改为'.iloc' - 它应该可以工作 – MaxU

+0

现在它可以工作,谢谢 – vsoler