2017-04-14 8 views
1

私は複数のデータフレームを扱っていますが、各データフレームには共通の列が1つあります。各DFがどのように見えるかの例:パンダ:1つの共通の列を使用して複数のデータフレームを結合する

post_id post_likes 
    0   1 
    1   2 
    2   3 
    3   4 
    4   5 
    5   6 

は、したがって、各DFは1つのpost_idのいる列、だけでなく、同類、総数、各後件DF内の名前などのように別の列を持っています。私の究極の目標は、このデータフレームをcsvに書き込むことなので、これらのdfsをすべてpost_idに基づいてグループ化する方法はありますか?

答えて

0

は私がpost_idと一つの他の列を列のラベルが付いたすべてのそれらのデータフレームの長いリストがあるとします。

lodf = [df1, df2, df3, df4, df5] 

pd.concatといっしょに入力することができます。あなただけの最初のインデックス

df = pd.concat([d.set_index('post_id') for d in lodf], axis=1).reset_index() 

デモ

df1 = pd.DataFrame(dict(post_id=[1, 2, 3], col1=[1, 2, 3])) 
df2 = pd.DataFrame(dict(post_id=[1, 2, 3], col2=[1, 2, 3])) 
df3 = pd.DataFrame(dict(post_id=[1, 2, 3], col3=[1, 2, 3])) 
df4 = pd.DataFrame(dict(post_id=[1, 2, 3], col4=[1, 2, 3])) 
df5 = pd.DataFrame(dict(post_id=[1, 2, 3], col5=[1, 2, 3])) 

lodf = [df1, df2, df3, df4, df5] 

df = pd.concat([d.set_index('post_id') for d in lodf], axis=1).reset_index() 
df 

    post_id col1 col2 col3 col4 col5 
0  1  1  1  1  1  1 
1  2  2  2  2  2  2 
2  3  3  3  3  3  3 

​ 
+0

感謝を設定する必要があります!私が望む出力を得ました – wolverinejohn

+0

@wolverinejohnあなたの問題を解決したら答えを受け入れるのを忘れないでください。 – piRSquared

0
import pandas as pd 
df1 = pd.DataFrame(columns=['post_id','post_likes'], data={'post_id': range(6), 'post_likes': range(1,7)}) 
df2 = pd.DataFrame(columns=['post_id','post_shares'], data={'post_id': range(6), 'post_shares': range(11,17)}) 
pd.merge(df1,df2,on='post_id') 

Out[12]: 
    post_id post_likes post_shares 
0  0   1   11 
1  1   2   12 
2  2   3   13 
3  3   4   14 
4  4   5   15 
5  5   6   16 
関連する問題