【问题标题】:how to perform outer merge on multiple DataFrames using pandas in python如何在 python 中使用 pandas 对多个 DataFrame 执行外部合并
【发布时间】:2020-04-04 07:59:30
【问题描述】:

我有 125 个列名相同的 csv 文件。我想合并所有这些(on=column)。 我尝试了以下代码,但它没有工作(似乎它在无限循环中运行)。

filelist = glob.glob('*.csv')
dflist = []
for filename in filelist:
df = pd.read_csv(filename)
dflist.append(df)
df_2 = reduce(lambda  left,right: pd.merge(left,right,on=['gene_id'],how='outer'), dflist)

我不能像 df_new = pd.concat([df1, df2, df3, df4], axis=1)) 那样使用 pd.concat,因为 csv 文件的行长不同。

还有其他方法可以对多个文件执行 pd.merge 吗?

提前致谢!!

【问题讨论】:

  • 如果它们有相同的列名,那么 pd.concat 就是你的 go 方法。文件的行长不同是什么意思?
  • 我想按列合并所有 csv 文件,即axis=1。但是当我运行 pd.concat 时,它给出了一个错误,说数组长度不同。
  • 它不会加起来......如果它们都有相同的列,你会想要并排合并它们(这就是 axis=1 的含义)。你介意分享说两个csv的前五行并显示你想要的结果在这两个合并后会是什么?基于此,我们可能会找出问题所在

标签: python pandas


【解决方案1】:

试试这个代码。

filelist = glob.glob('*.csv')
merged_df = pd.read_csv(filelist[0])

for filename in filelist:
    df = pd.read_csv(filename)
    merged_df = pd.merge(merged_df, df, on = ['gene_id'], how = 'outer')

【讨论】:

  • 非常感谢。有效。由于某种原因,它没有以任何特定的顺序合并 csv 文件。没有办法说哪个文件在哪里合并。我试过'排序'文件仍然是同样的问题。
猜你喜欢
  • 1970-01-01
  • 2022-11-04
  • 2021-09-03
  • 1970-01-01
  • 2014-02-08
  • 2016-09-21
  • 2021-12-12
  • 2021-11-21
  • 2013-03-12
相关资源
最近更新 更多