我有几个数据帧(具有相等的#列但名称不同)。我正在尝试创建一个数据帧,其中行彼此堆叠。我现在不在乎列名(以后随时可以重命名)。我看到了不同的SO链接,但它们不能完全解决此问题。
请注意,我有21个数据帧,可伸缩性很重要。我在看 this
我如何获得df:
df = []
for f in files:
data = pd.read_csv(f, usecols = [0,1,2,3,4])
df.append(data)
答案 0 :(得分:3)
假设您的DataFrame存储在某个列表df_l
中:
重命名列并连接:
df_l = [df1, df2, df3]
for df in df_l:
df.columns = df_l[0].columns # Just chose any DataFrame
pd.concat(df_l) # Columns named with above DataFrame
# Index is preserved
或构造一个新的DataFrame:
pd.DataFrame(np.vstack([df.to_numpy() for df in df_l])) # Columns are RangeIndex
# Index is RangeIndex
答案 1 :(得分:1)
我会在开始时添加skiprows=1
names=[0,1,2,3,4]# what every you want to call them ..
pd.concat([pd.read_csv(f, usecols = [0,1,2,3,4],skiprows=1,names=[0,1,2,3,4]) for f in files])
答案 2 :(得分:0)
将所有数据帧放入列表后,请尝试以下代码。
import pandas as pd
df = [df1, df2, df3]
result = pd.DataFrame(columns=df1.columns)
for df in df:
result = pd.concat([result,df.rename(columns=df1.columns)], ignore_index=True)