2017-08-04 102 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]