2014-11-03 4 views
0

Каждый столбец Dataframe нуждается в нормализации их значений в соответствии с значением первого элемента в этом столбце.Нормализовать каждый столбец pandas 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.

+0

примечание стороны: на ответ @ unutbu, редко бывает, что лучшим решением является цикл через строки DataFrame –

+0

@PaulH, как я вижу, код перебирает столбцы данных (а не строки). – moooeeeep

ответ

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

Присвоить data[col]:

for col in data: 
    data[col] /= data[col].iloc[0] 
Смежные вопросы