将多个具有不同名称的列堆叠到一个巨型数据框中

时间:2019-05-09 20:06:25

标签: python pandas multiple-columns

我有几个数据帧(具有相等的#列但名称不同)。我正在尝试创建一个数据帧,其中行彼此堆叠。我现在不在乎列名(以后随时可以重命名)。我看到了不同的SO链接,但它们不能完全解决此问题。

请注意,我有21个数据帧,可伸缩性很重要。我在看 this

enter image description here

我如何获得df:

df = []

for f in files:
    data = pd.read_csv(f, usecols = [0,1,2,3,4])
    df.append(data)

3 个答案:

答案 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)