如何在Pandas中合并不同长度的DataFrames

  • Post category:Python

在 Pandas 中,可以通过 merge 和 concat 函数合并不同长度的 DataFrames。

1. Merge 函数

merge 函数可以根据一个或多个 key 进行合并,类似于 SQL 中的 JOIN 操作。可以使用 how 参数来指定连接方式,包括 inner(交集)、outer(并集)、left(左连接)和 right(右连接)。

下面给出一个具体的示例:

我们先定义两个含有不同长度数据的 DataFrame:

import pandas as pd

data1 = {'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4]}
df1 = pd.DataFrame(data1)

data2 = {'key': ['B', 'D', 'E'], 'value2': ['x', 'y', 'z']}
df2 = pd.DataFrame(data2)

得到的 df1 为:

key value1
0 A 1
1 B 2
2 C 3
3 D 4

df2:

key value2
0 B x
1 D y
2 E z

现在,我们可以将这两个 DataFrame 按照 key 列中的值进行合并,得到一个新的 DataFrame:

df_merge = pd.merge(df1, df2, how='left', on='key')

注意,这里使用了 how=’left’ 表示左连接。合并后的 df_merge 为:

key value1 value2
0 A 1 NaN
1 B 2 x
2 C 3 NaN
3 D 4 y

2. Concat 函数

concat 函数可以按照一定的方式将多个 DataFrame 连接在一起。

下面给出一个具体的示例:

我们同样定义两个不同长度的 DataFrame:

import pandas as pd

data1 = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df1 = pd.DataFrame(data1)

data2 = {'B': [7, 8], 'C': [9, 10]}
df2 = pd.DataFrame(data2)

得到的 df1 为:

A B
0 1 4
1 2 5
2 3 6

df2:

B C
0 7 9
1 8 10

现在,我们可以将这两个 DataFrame 按行方向(axis=0)连接起来,得到一个新的 DataFrame:

df_concat = pd.concat([df1, df2], axis=0)

合并后的 df_concat 为:

A B C
0 1 4 NaN
1 2 5 NaN
2 3 6 NaN
0 NaN 7 9
1 NaN 8 10

总结起来,Pandas 中可以通过 merge 和 concat 两个函数来合并不同长度的 DataFrames,需要具体情况具体分析。