附加for循环中生成的pandas数据帧

El *_*uso 54 python pandas

我在for循环中访问一系列Excel文件.然后我将excel文件中的数据读取到pandas数据帧.我无法弄清楚如何将这些数据帧附加到一起,然后将数据帧(现在包含来自所有文件的数据)保存为新的Excel文件.

这是我试过的:

for infile in glob.glob("*.xlsx"):
    data = pandas.read_excel(infile)
    appended_data = pandas.DataFrame.append(data) # requires at least two arguments
appended_data.to_excel("appended.xlsx")
Run Code Online (Sandbox Code Playgroud)

谢谢!

bio*_*man 108

使用pd.concat以数据帧列表合并成一个大的数据帧.

appended_data = []
for infile in glob.glob("*.xlsx"):
    data = pandas.read_excel(infile)
    # store DataFrame in list
    appended_data.append(data)
# see pd.concat documentation for more info
appended_data = pd.concat(appended_data)
# write DataFrame to an excel sheet 
appended_data.to_excel('appended.xlsx')
Run Code Online (Sandbox Code Playgroud)

  • @FaCoffee,从代码中删除`axis = 1`以将dfs绑定在彼此之下.:) (6认同)
  • 读取数据时,请在文件名中添加新列。可能很简单,例如`data ['filename'] = infile`。 (4认同)
  • 除非另有说明,否则我认为“附加”是指行而不是列,建议从此答案中删除“ axis = 1”。 (2认同)

小智 25

你可以试试这个.

data_you_need=pd.DataFrame()
for infile in glob.glob("*.xlsx"):
    data = pandas.read_excel(infile)
    data_you_need=data_you_need.append(data,ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

我希望它可以提供帮助.

  • 我试过了,但我的 data_you_need 是空的。不知道出了什么问题 (3认同)
  • 有 O(N^2) 表示法,参见 [http://stackoverflow.com/questions/37009287/using-pandas-append-within-for-loop](http://stackoverflow.com/questions/37009287/using -pandas-append-within-for-loop) (2认同)
  • 嗨@Ilya - 假设您在链接中引用了亚历山大的帖子 - 引用的性能较慢是因为使用“DataFrame.append”操作而不是“list.append”操作 - 不是因为“DataFrame.append”操作而不是`DataFrame.concat` 操作。 (2认同)
  • 永远不要增长数据框!而是追加到列表中。从 /sf/ask/750117581/ 查看 https://i.stack.imgur.com/Ag2NQ.png (2认同)