这是我的代码段:
import os
import pandas as pd
path = os.getcwd()
files = os.listdir(path)
df = []
for f in files:
data = pd.read_csv(f, usecols = [0,1,2,3,4])
df.append(data)
temp = pd.concat(df)
其中df是数据帧的列表:
0
DataFrame
(1, 5)
1
DataFrame
(7, 5)
2
DataFrame
(5, 5)
3
DataFrame
(10, 5)
4
DataFrame
(1, 5)
5
DataFrame
(2, 5)
我正在尝试将这些数据帧相互堆叠,并获得一个数据帧作为输出。我已经尝试了来自SO Q&A的许多组合,但是似乎都没有用。我觉得这很容易。我究竟做错了什么?
答案 0 :(得分:2)
此任务不需要for循环或列表理解。只需:
pd.concat(df)
其中df
是数据帧的列表。
这里是一个例子:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randint(0,100,size=(1,5)), columns=list('ABCDE'))
df2 = pd.DataFrame(np.random.randint(0,100,size=(7,5)), columns=list('ABCDE'))
df3 = pd.DataFrame(np.random.randint(0,100,size=(5,5)), columns=list('ABCDE'))
df = [df1, df2, df3]
concatenated = pd.concat(df)
产量(例如):
A B C D E
0 10 48 49 84 86
0 29 5 44 20 80
1 80 7 5 9 81
2 35 32 15 42 33
3 59 79 74 80 66
4 48 91 44 33 73
5 52 98 94 44 86
6 70 16 73 25 71
0 52 20 75 34 90
1 92 88 26 35 26
2 54 3 49 70 46
3 24 12 71 69 57
4 3 71 93 58 74
如果需要,您可以使用.reset_index(drop=True)
重设索引。