【问题标题】:pandas merge all files in the same directory熊猫合并同一目录中的所有文件
【发布时间】:2017-07-21 15:54:23
【问题描述】:

我正在尝试pd.merge 将同一目录中的所有文件合并为一个文件。这是输入的示例,它们是同一目录中的 excel 文件:

df1:
A     B     C
a     1     dog
b     0     dog
c     2     cat

df2:
A     D     E
a     2     bird
b     4     lion
c     1     cat

df3:
A     F      G
a     1     seal
b     20    raccoon
c     2     squirrel

这是我想要的输出:

A     B     C      D     E     F     G     
a     1     dog    2     bird  1     seal
b     0     dog    4     lion  20    raccoon
c     2     cat    1     cat   2     squirrel

我的代码:

  files = glob.glob('/Users/files/*.xlsx')
  all_data = pd.merge(files, how='left')

错误:

  TypeError: merge() missing 1 required positional argument: 'right'

merge 仅适用于合并两个文件吗?

感谢您的帮助!

【问题讨论】:

  • pd.merge 需要数据帧而不是文件名。
  • 将文件读入列表 pd.concat 而不是merge ,PS:设置A为索引
  • @JohnGalt 感谢您的提醒,这很有帮助。
  • @Wen thx!你是说pd.Dataframe.set_index()
  • 我想@JohnGalt 已经让我的评论变成了答案,你可以检查一下

标签: python pandas merge glob


【解决方案1】:

使用pd.concat,索引设置在A

In [20]: pd.concat(
            [pd.read_excel(f).set_index('A') for f in glob.glob('*.xlsx')],
            axis=1).reset_index()
Out[20]:
   A  B    C  D     E   F         G
0  a  1  dog  2  bird   1      seal
1  b  0  dog  4  lion  20   raccoon
2  c  2  cat  1   cat   2  squirrel

【讨论】:

    猜你喜欢
    • 2016-11-26
    • 2022-01-19
    • 2013-06-03
    • 2017-09-09
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    相关资源
    最近更新 更多