2016-05-08 3 views
2

У меня есть следующие DataFrameВыбор значения первой строки в панд DataFrame

    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: («не может индексировать индексы на с этими индексаторами [0] из «, »произошло в индексе AAPL») – vsoler

+0

@vsoler, я обновил свой ответ - изменил '.loc' на' .iloc' - он должен работать – MaxU

+0

Теперь он работает, спасибо – vsoler

Смежные вопросы