如何堆叠多个 pandas dataframe


通常,您可能想要堆叠两个或多个 pandas DataFrame。幸运的是,使用 pandas concat()函数可以轻松做到这一点。

本教程展示了如何执行此操作的几个示例。

示例 1:堆叠两个 Pandas DataFrame

以下代码显示了如何将两个 panda DataFrame 彼此“堆叠”并创建一个 DataFrame:

 import pandas as pd

#create two DataFrames
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
                    'points':[12, 5, 13, 17, 27]})

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
                    'points':[24, 26, 27, 27, 12]})

#"stack" the two DataFrames together
df3 = pd. concat ([df1,df2], ignore_index= True )

#view resulting DataFrame
df3

	player points
0 to 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7:27 a.m.
8 I 27
9 D 12

示例 2:堆叠三个 Pandas DataFrame

类似的代码可用于将三个 panda DataFrame 堆叠在一起以创建一个 DataFrame:

 import pandas as pd

#create three DataFrames
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
                    'points':[12, 5, 13, 17, 27]})

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
                    'points':[24, 26, 27, 27, 12]})

df3 = pd.DataFrame({'player': ['K', 'L', 'M', 'N', 'O'],
                    'points':[9, 5, 5, 13, 17]})

#"stack" the two DataFrames together
df4 = pd. concat ([df1,df2, df3], ignore_index= True )

#view resulting DataFrame
df4

        player points
0 to 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7:27 a.m.
8 I 27
9 D 12
10K 9
11 L 5
12 M 5
13 N 13
14 O 17

ignore_index的重要性

请注意,在前面的示例中我们使用了ignore_index=True

这告诉 pandas 忽略每个 DataFrame 中的索引号,并为新 DataFrame 创建一个范围从 0 到 n-1 的新索引。

例如,考虑一下当我们在堆叠以下两个 DataFrame 时不使用ignore_index=True时会发生什么:

 import pandas as pd

#create two DataFrames with indices
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
                    'points':[12, 5, 13, 17, 27]},
                    index=[0, 1, 2, 3, 4])

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
                    'points':[24, 26, 27, 27, 12]},
                    index=[2, 4, 5, 6, 9])

#stack the two DataFrames together
df3 = pd. concat ([df1,df2])

#view resulting DataFrame
df3

        player points
0 to 12
1 B 5
2 C 13
3 D 17
4 E 27
2 F 24
4G 26
5:27 a.m.
6 I 27
9 D 12

生成的 DataFrame 保留了两个 DataFrame 的原始索引值。

因此,在堆叠两个 DataFrame 时,通常应该使用ignore_index=True ,除非您有特定原因要保留原始索引值。

其他资源

以下教程解释了如何在 Pandas 中执行其他常见任务:

如何向 Pandas DataFrame 添加空列
如何将列插入 Pandas DataFrame
如何将 Pandas DataFrame 导出到 Excel

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注