首页 > 解决方案 > 如何连接具有不同长度(和 samo 列)的数据帧?

问题描述

我正在尝试将多个熊猫数据框相互堆叠。它们有不同的长度,但都有 7 列。我想将它们粘贴在彼此下方(在axis = 0上连接)。所以结果应该是各个长度的总和乘以 7. (x, 7)。

要连接,我使用:

import pandas as pd
import numpy as np

df_1 = pd.DataFrame(np.random.randint(0,100,size=(100, 7))
df_2 = pd.DataFrame(np.random.randint(0,100,size=(150, 7))
df_3 = pd.DataFrame(np.random.randint(0,100,size=(90, 7))
df_4 = pd.DataFrame(np.random.randint(0,100,size=(1001, 7))
df_5 = pd.DataFrame(np.random.randint(0,100,size=(1050, 7))
df_6 = pd.DataFrame(np.random.randint(0,100,size=(780, 7))
df_7 = pd.DataFrame(np.random.randint(0,100,size=(80, 7))

series = [df_1, df_2, df_3, df_4, df_5, df_6, df_7]

total = pd.concat(series, axis=0)

print(total.shape)

结果是 (3251, 15),但期望的结果是 (3251, 7)。

我应该怎么做才能到达那里?

请注意,我没有具体标识 Dataframe 中的索引或列。也许解决方案就在那里,但我不确定如何使用这些属性。

标签: pythonpandasdataframeconcatenation

解决方案


运行您的代码,它工作正常:

import pandas as pd
import numpy as np

df_1 = pd.DataFrame(np.random.randint(0,100,size=(100, 7)))
df_2 = pd.DataFrame(np.random.randint(0,100,size=(150, 7)))
df_3 = pd.DataFrame(np.random.randint(0,100,size=(90, 7)))
df_4 = pd.DataFrame(np.random.randint(0,100,size=(1001, 7)))
df_5 = pd.DataFrame(np.random.randint(0,100,size=(1050, 7)))
df_6 = pd.DataFrame(np.random.randint(0,100,size=(780, 7)))
df_7 = pd.DataFrame(np.random.randint(0,100,size=(80, 7)))

series = [df_1, df_2, df_3, df_4, df_5, df_6, df_7]

total = pd.concat(series, axis=0)

print(total)

     0   1   2   3   4   5   6
0   38  73   6  64  54  20  52
1   41  28   9  14  40  24  17
2   31  53   5  84  53   4  81
3   65   2  87  38  53  62  58
4   57  34   9  50  56  22  81
..  ..  ..  ..  ..  ..  ..  ..
75   1  63  71  71  76   3  95
76  87  47  33  43  79  99  73
77  12  58  11  93   5  35  18
78  16  41  44  15  79  74  73
79  76  54  34  83  35  22  50

[3251 rows x 7 columns]

推荐阅读