2017-04-14 66 views
1

我正在處理多個數據幀,每個數據幀有一個共同的列,這是post_id。每個DF看起來像一個例子:熊貓:合併多個數據幀使用一個共同的列

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

所以每個DF都有一列,已POST_ID,也是另一列,如喜歡,總計數,名稱等在每個隨後的DF。有沒有什麼辦法可以根據post_id將所有這些dfs分組爲一個,因爲我的最終目標是將此數據框寫入csv。

回答

0

假設我有dataframes所有這些有標記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