2017-08-04 14 views
0

パンダ修正データフレーム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

@Wen - 私はその方法を使用しようとしましたが、必要な方法でデータフレームを変更しませんでした。私は同じループでそれをやっていませんでしたが、どうすればよいかわかりません。 –

+0

@ DanceParty2私は再び答えを投稿しました〜 – Wen

答えて

0

[OK]を、あなたは試みることができます この

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] 
関連する問題