Python Pandas - 根据索引

时间:2017-03-18 07:30:16

标签: python-3.x pandas dictionary

我有一个带有空列的数据框和一个相应的字典,我想根据索引列更新空列:

import pandas as pd    
import numpy as np

dataframe = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9], [4, 6, 2], [3, 4, 1]])
dataframe.columns = ['x', 'y', 'z']
additional_cols = ['a', 'b', 'c']

for col in additional_cols:
     dataframe[col] = np.nan

    x   y   z   a  b  c
0   1   2   3           
1   4   5   6           
2   7   8   9           
3   4   6   2           
4   3   4   1           

for row, column in x.iterrows():
    #caluclations to return dictionary y
    y = {"a": 5, "b": 6, "c": 7}
    df.loc[row, :].map(y)

基本上在使用x,y,z列执行计算后,我想更新同一行的a,b,c列:)

2 个答案:

答案 0 :(得分:2)

我可以使用这样的函数,但就pandas库和DataFrame对象的方法我不确定...

$window.location.reload()

答案 1 :(得分:2)

以上答案正确缩进

def update_row_with_dict(df,d,idx):
    for key in d.keys():
        df.loc[idx, key] = d.get(key)

更短的是

def update_row_with_dict(df,d,idx):
    df.loc[idx,d.keys()] = d.values()

对于您的代码剪断语法将是:

import pandas as pd    
import numpy as np

dataframe = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9], [4, 6, 2], [3, 4, 1]])
dataframe.columns = ['x', 'y', 'z']
additional_cols = ['a', 'b', 'c']

for col in additional_cols:
    dataframe[col] = np.nan

for idx in dataframe.index:
    y = {'a':1,'b':2,'c':3}
    update_row_with_dict(dataframe,y,idx)