2017-08-04 71 views
0

熊猫修改DataFrames鉴于以下数据帧:在循环第2部分

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 

我想用组和在循环中应用,但这样做似乎没有修改数据帧。

这是我已经试过:

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

它与你以前的问题几乎相同,你可以使用相同的方法。 – Wen

+0

@文 - 我试过使用该方法,但它不会以我需要的方式修改数据帧。但是,我没有在同一个循环中做,因为我不知道如何。 –

+0

@ DanceParty2我再次发布了我的答案〜 – Wen

回答

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 
+0

downvote的原因是什么? – Wen

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]