给出以下数据框:
import pandas as pd
k=pd.DataFrame({'A':[1,1],'B':[3,4]})
e=pd.DataFrame({'A':[1,1],'B':[6,7]})
k
A B
0 1 3
1 1 4
e
A B
0 1 6
1 1 7
我想在循环中应用group-by sum,但这样做似乎并没有修改数据帧。
这是我尝试过的:
for d in dfsout:
d=d.groupby(d.columns[0]).apply(sum)
print(d)
当我在循环中打印d时,它表明正在进行正确的操作......
A B
A
1 2 7
A B
A
1 2 13
...但是当我打印数据帧k和e时,它们没有被修改。
k
A B
0 1 3
1 1 4
e
A B
0 1 6
1 1 7
更新
我也尝试将它用作函数(在循环中工作,仍然不会修改):
def moddf(d):
return d.groupby(d.columns[0]).apply(sum)
for d in dfsout:
d=moddf(d)
print(d)
提前致谢!
答案 0 :(得分:0)
这有效:
首先,定义函数
def moddf(d):
return d.groupby(d.columns[0]).apply(sum)
接下来,重新分配修改后的数据框,如下所示:
k,e=[moddf(x) for x in dfsout]
或
dfsout2=[moddf(x) for x in dfsout]
答案 1 :(得分:0)
好的,你可以试试这个
import pandas as pd
k=pd.DataFrame({'A':[1,1],'B':[3,4]})
e=pd.DataFrame({'A':[1,1],'B':[6,7]})
fields=['k','e']
dfsout=[k,e]
variables = locals()
for d,name in zip(dfsout,fields):
variables["{0}".format(name)]=d.groupby(d.columns[0]).apply(sum)
k
Out[756]:
A B
A
1 2 7
e
Out[757]:
A B
A
1 2 13