📜  pandas concat 和重置索引 - Python (1)

📅  最后修改于: 2023-12-03 14:45:02.267000             🧑  作者: Mango

Pandas Concat和重置索引 - Python

在数据科学和机器学习中,很常见需要把两个或多个数据集连接在一起。在 Pandas 中,我们可以用 pd.concat() 函数实现这个操作。本文将讲解 Pandas 中 pd.concat() 函数的使用方法,以及如何使用 reset_index() 函数来重置新数据集的索引。

Pandas concat

pd.concat() 函数可以把 Pandas Series 或 Dataframes 沿某个轴连接起来。可以设置连接轴(默认 axis=0 ,即按照行进行连接),以及选择是否在连接轴上去除重复的索引。以下是示例的两个 Dataframes:

import pandas as pd

# 创建两个 dataframes
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']})

pd.concat() 函数的常用参数有:

  • objs:需要连接的 pandas 对象列表。
  • axis:指定连接的轴方向。默认为 axis=0
  • join:连接方式,支持 leftrightinner 或者 outer。默认为 join='outer'
  • ignore_index:是否忽略原有的索引,生成新的索引。默认为 ignore_index=False
# 以行方向连接两个 dataframe
df = pd.concat([df1, df2], axis=0, ignore_index=True)

print(df)

输出:

     A   B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3
4   A4  B4  C4  D4
5   A5  B5  C5  D5
6   A6  B6  C6  D6
7   A7  B7  C7  D7

上面代码展示了如何将两个 dataframe 沿着行方向进行连接。

重置索引

在上面的例子中,我们使用了 ignore_index=True 来重置索引。这是因为在两个数据帧连接在一起后,它们可能会出现重复的索引。reset_index() 函数是另一个用来重置索引的好方法。它可以帮助我们生成新 indexes,但是也会保留原来的 indexes 作为另一个列。

下面,将通过示例来演示如何使用 reset_index() 函数。

df = pd.DataFrame({'month': ['Jan', 'Feb', 'Mar', 'Apr'],
                   'A': [30, 20, 25, 40],
                   'B': [25, 30, 45, 10],
                   'C': [10, 20, 30, 40]})

new_df = df.reset_index()

print(new_df)

此时将生成一个新的 DataFrame,其中重置的索引将成为新的一列:

   index month   A   B   C
0      0   Jan  30  25  10
1      1   Feb  20  30  20
2      2   Mar  25  45  30
3      3   Apr  40  10  40
结论

Pandas 中的 pd.concat()reset_index() 函数是数据科学和机器学习中常用的工具之一。Pandas 可以方便地将您的数据集连接在一起,并生成一个新的 DataFrame,此外还允许使用 reset_index() 函数将原有的索引重新设置为正常的连续索引。