在 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,需要具体情况具体分析。