我有一个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....
我对如何构建最后一点有点迷茫
答案 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'])