2017-10-15 109 views
0

我有csv文件的目錄:Python的大熊貓 - 合併目錄CSV文件到一個

frames/df1.csv 
     df2.csv 

幀結構是這樣的:

df1.csv

   artist   track  plays 
1   Pearl Jam   Jeremy   456 
2 The Rolling Stones Heart of Stone   546 

df2.csv

   artist   track  likes 
3   Pearl Jam   Jeremy   5673 
9 The Rolling Stones Heart of Stone   3456 

,我想所有的幀合併爲一個,與結束了:

   artist   track   plays  likes  
0   Pearl Jam   Jeremy   456  5673  
1 The Rolling Stones Heart of Stone   546  3456  

我已經試過:

path = 'frames' 
all_files = glob.glob(path + "/*.csv") 
list_ = [] 
for file_ in all_files: 
    df = pd.read_csv(file_,index_col=None, header=0) 
    list_.append(df) 
frame = pd.concat(list_) 

無濟於事。解決這個問題的最好方法是什麼?

回答

2

我只是簡單地使用你的代碼中創建

path = 'frames' 
all_files = glob.glob(path + "/*.csv") 
l= [] 
for file_ in all_files: 
    df = pd.read_csv(file_,index_col=None, header=0) 
    l.append(df) 

然後使用functools.reduce數據幀的列表,合併列表數據幀到一個

import functools 
l= [df1, df2, df3....] 
merged_df = functools.reduce(lambda left,right: pd.merge(left,right,on=['artist','track']), l) 
0

DataFrame.join很有用。它類似於SQL連接。喜歡的東西:

df1.join(df2, on=('artist', 'track')) 
+1

不錯哦'join'品牌有關索引的假設。其他解決方案中提到的「合併」是您不希望對數據框的所有索引進行規範化時的正確選擇。 – avigil