📌  相关文章
📜  在某些列上合并两个 Pandas DataFrame(1)

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

在某些列上合并两个 Pandas DataFrame

有时候我们需要将两个Pandas DataFrame合并起来,根据某些特定的列进行合并。这是一个非常常见的操作,因此Pandas提供了很多方法来实现。

方法一:merge()方法

merge()方法是Pandas中最常用最灵活的方法之一。我们可以使用这个方法根据指定的一些列来合并两个DataFrame。下面是一个例子:

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})

merged_df = pd.merge(df1, df2, on='key')

print(merged_df)

输出:

  key  value_x  value_y
0   B        2        5
1   D        4        6

在这个例子中,我们有两个DataFrame,它们都有一个“key”列和一个“value”列。我们想要根据“key”列将这两个DataFrame合并起来,因此我们使用了merge()方法,并指定on参数为“key”。

方法二:join()方法

我们也可以使用join()方法来合并两个DataFrame,但是需要注意的是,join()方法只能使用DataFrame中的索引来连接。因此,在使用join()方法时,我们需要将DataFrame的索引设置为我们想要连接的列。下面是一个例子:

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})
df2.set_index('key', inplace=True)

merged_df = df1.join(df2, on='key')

print(merged_df)

输出:

  key  value_x  value_y
0   A        1      NaN
1   B        2        5
2   C        3      NaN
3   D        4        6

在这个例子中,我们同样是根据“key”列来合并这两个DataFrame。不过这次我们使用了join()方法,首先将df2的索引设置为“key”,然后再使用join()方法来将df1和df2合并起来,并指定on参数为“key”。

方法三:concat()方法

除了merge()和join()方法之外,我们还可以使用concat()方法来合并两个DataFrame。concat()方法也是非常灵活的,可以根据指定的列来合并DataFrame。下面是一个例子:

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})

merged_df = pd.concat([df1.set_index('key'), df2.set_index('key')], axis=1, join='inner')

print(merged_df)

输出:

   value  value
B      2      5
D      4      6

在这个例子中,我们首先将df1和df2的索引分别设置为“key”,然后使用concat()方法将它们合并起来。在这个例子中,我们使用了axis参数来指定我们想要连接的轴,使用join参数来指定想要连接的方式,这里我们使用了“inner”方式,表示只连接两个DataFrame中都出现过的“key”。