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