pandas常用拼接方法

147 阅读1分钟

当处理多个 DataFrame 时,有几种常见的拼接方法可以使用,包括 concatmergejoin 等。让我通过举例说明这些方法的使用。

假设我们有两个 DataFrame,分别包含了不同商品的信息:

import pandas as pd

# DataFrame 1: 包含商品编号和价格
data1 = {
    'item_id': ['A', 'B', 'C'],
    'price': [10, 20, 15]
}
df1 = pd.DataFrame(data1)

# DataFrame 2: 包含商品编号和销量
data2 = {
    'item_id': ['A', 'B', 'D'],
    'sales': [100, 200, 150]
}
df2 = pd.DataFrame(data2)

print("DataFrame 1:")
print(df1)
print("\nDataFrame 2:")
print(df2)

这将输出:

DataFrame 1:
  item_id  price
0       A     10
1       B     20
2       C     15

DataFrame 2:
  item_id  sales
0       A    100
1       B    200
2       D    150

现在,让我们使用各种拼接方法将这两个 DataFrame 进行合并。

1. 使用 concat 拼接

concat 方法用于沿着指定轴(默认是行轴)拼接多个 DataFrame。

concatenated = pd.concat([df1, df2], axis=0, ignore_index=True)
print("Concatenated DataFrame:")
print(concatenated)

这将输出:

Concatenated DataFrame:
  item_id  price  sales
0       A   10.0    NaN
1       B   20.0    NaN
2       C   15.0    NaN
3       A    NaN  100.0
4       B    NaN  200.0
5       D    NaN  150.0

2. 使用 merge 拼接

merge 方法用于根据一个或多个键将两个 DataFrame 进行合并。

merged = pd.merge(df1, df2, on='item_id', how='outer')
print("Merged DataFrame:")
print(merged)

这将输出:

Merged DataFrame:
  item_id  price  sales
0       A   10.0  100.0
1       B   20.0  200.0
2       C   15.0    NaN
3       D    NaN  150.0

3. 使用 join 拼接

join 方法用于根据索引(行标签)将两个 DataFrame 进行合并。

df1.set_index('item_id', inplace=True)
df2.set_index('item_id', inplace=True)
joined = df1.join(df2, how='outer', lsuffix='_left', rsuffix='_right')
print("Joined DataFrame:")
print(joined)

这将输出:

Joined DataFrame:
         price  sales
item_id              
A         10.0  100.0
B         20.0  200.0
C         15.0    NaN
D          NaN  150.0

这些都是常见的拼接方法,选择哪种方法取决于你的数据结构和需要。