我的数据框如下:
007538839
0 105586.180
1 105582.910
2 105585.230
3 105576.445
4 105580.016
df1.shape = (69302, 1)
这里只有一列,名称为“ 007538839”。我还有其他几个数据框,它们也具有这样的一列,但具有不同的列名和不同的行大小。
007543167
0 39886.620
1 39908.777
2 39886.574
3 39884.340
4 39871.098
df2.shape = (69778, 1)
我想将它们全部合并成一个看起来像这样的循环:
import os
base_dir = ''
for root, dirs, files in os.walk(base_dir, topdown=False):
for name in files:
if root.count(os.sep) == 3 and name.endswith(".csv"):
file_path = os.path.join(root, name)
#merge all files
我的目标是不删除任何行,对于尚无值的行,将分配NaN。因此,例如,如果将df1和df2合并,则应该得到69778行。
答案 0 :(得分:0)
首先通过追加创建字典列表,然后将concat
与axis=1
结合使用:
import os
dfs = []
base_dir = ''
for root, dirs, files in os.walk(base_dir, topdown=False):
for name in files:
if root.count(os.sep) == 3 and name.endswith(".csv"):
file_path = os.path.join(root, name)
df = pd.read_csv(file_path)
dfs.append(df)
df = pd.concat(dfs, axis=1)