Pandas修改循环第2部分中的数据帧

2024-09-30 01:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

给定以下数据帧:

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)

提前谢谢!你知道吗


Tags: columns数据inimportdataframepandasforas
2条回答

好的,你可以试试这个

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

这起作用了:

首先,定义函数

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]

相关问题 更多 >

    热门问题