规范化pandas DataFrame的每一列

时间:2014-11-03 19:16:10

标签: python python-2.7 pandas dataframe

Dataframe的每一列都需要根据该列中第一个元素的值对其值进行规范化。

for timestamp, prices in data.iteritems():
    normalizedPrices = prices / prices[0]
    print normalizedPrices     # how do we update the DataFrame with this Series?

但是,一旦我们创建了规范化的数据列,我们如何更新DataFrame?我相信,如果我们prices = normalizedPrices,我们只是在处理DataFrame的副本/视图而不是原始的DataFrame本身。

3 个答案:

答案 0 :(得分:2)

最简单的方法是一次性规范化整个DataFrame(并避免完全循环遍历行/列):

>>> df = pd.DataFrame({'a': [2, 4, 5], 'b': [3, 9, 4]}, dtype=np.float) # a DataFrame
>>> df
   a  b
0  2  3
1  4  9
2  5  4

>>> df = df.div(df.loc[0]) # normalise DataFrame and bind back to df
>>> df
     a         b
0  1.0  1.000000
1  2.0  3.000000
2  2.5  1.333333

答案 1 :(得分:1)

分配给data[col]

for col in data:
    data[col] /= data[col].iloc[0]

答案 2 :(得分:0)

import numpy

data[0:] = data[0:].values/data[0:1].values