Python的大熊猫 - 合并目录CSV文件到一个

问题描述:

我有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_) 

无济于事。解决这个问题的最好方法是什么?

我只是简单地使用你的代码中创建

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) 

DataFrame.join很有用。它类似于SQL连接。喜欢的东西:

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

不错哦'join'品牌有关索引的假设。其他解决方案中提到的“合并”是您不希望对数据框的所有索引进行规范化时的正确选择。 – avigil