我想读取位于同一目录中的多个文件,然后将它们合并到一个 pandas 数据框中。
如果我这样做,它会起作用:
import pandas as pd
df1 = pd.read_csv("data/12015.csv")
df2 = pd.read_csv("data/22015.csv")
df3 = pd.read_csv("data/32015.csv")
df = pd.concat([df1, df2, df3])
但是,我想使用更优雅的解决方案,如果文件数量大于 3,该解决方案将特别有用。
我尝试过这种方法,但是我不知道如何在 for 循环中应用 concat
。
import pandas as pd
import os
from os import path
files = [x for x in os.listdir("data") if path.isfile("data"+os.sep+x)]
for f in files:
df = pd.read_csv("data/"+f)
最佳答案
您可以使用列表理解来创建要连接的 DataFrame 列表,然后在该列表上调用 pd.concat()
。示例 -
import pandas as pd
import os
from os import path
dfs = [pd.read_csv(path.join('data',x)) for x in os.listdir("data") if path.isfile(path.join("data",x))]
df = pd.concat(dfs)
你应该考虑使用 os.path.join()
因为我曾经创建路径,而不是自己连接字符串。
关于python - 如何读取多个文件并将它们合并到一个 pandas 数据框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32893509/