在循环熊猫中添加列

时间:2018-12-22 15:18:42

标签: pandas

我有一个2个数据帧,每个数据帧有2列(两个df中的名称相同),我想将它们加在一起构成第三列。

df1['C']=df1[['A','B']].sum(axis=1) 
 df1['D']=df1[['E','G']].sum(axis=1)
df2['C']=df2[['A','B']].sum(axis=1) 
 df2['D']=df2[['E','G']].sum(axis=1)

但是实际上它比这更复杂。那么我可以将它们放入字典并循环吗?

我仍在寻找如何为此类问题构建字典的方法,因此任何建议都是不错的选择。

这就是我想要做的:

all_dfs=[df1,df2]

for df in all_dfs:

dict={Out=['C'], in=['A','B]
    Out2=['D'], in2=['E','G]
}

for i in dict:
    df[i]=df[['i[1....

我对如何构建最后一点有点迷茫

1 个答案:

答案 0 :(得分:1)

首先更改字典名称,因为dict是python代码字,然后通过带有输出列的键来更改它,并通过输入列的列表来值来更改,最后通过items()方法来循环:

d= {'C':['A','B'],'D': ['E','G']}

for k, v in d.items():
    #checking key and value of dict
    print (k)
    print (v) 
    df[k]=df[v].sum(axis=1)

编辑:

在这里使用DataFrames字典更加简单,使用sum并最后创建DataFrames的注释者字典:

all_dfs= {'first': df1, 'second':df2}
out = {}

for name, df in all_dfs.items():
    d= {'C':['A','B'],'D': ['E','G']}
    for k, v in d.items():
        df[k]=df[v].sum(axis=1)
        #fill empty dict by name
        out[name] = df

print (out)
print (out['first'])
print (out['second'])