Python pandas - 将目录中的csv文件合并为一个

标签 python pandas csv

我有一个包含 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_)

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

最佳答案

我只是简单地使用您的代码创建 DataFrame 列表

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)

关于Python pandas - 将目录中的csv文件合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46751699/

相关文章:

python - 如何检查对象属性是否属于方法包装器类型?

python - 基数为 10 的 int() 无效文字 : 'N/A' Django

python - Python 3.3.2 中的重载函数用法

python - 将数据帧与单个值进行比较时如何获取返回的模式

python - 打开 CSV IOError : [Errno 13] Permission Denied

python - 机器的固定标识符 (uuid.getnode)

python - 如何使用 pandas 使用 python 将每 N 个值的列表拆分为数据框列和行

python - 循环发送多个 Pandas DataFrames .to_csv()

php - 在 PHP 中将 CSV 文件导入 Mysql 数据库

bash - 如何为字符串中的每个单词添加单引号