2)键值名不一样的合并(包括:键值名不同,键值名不同且其中至少一个是索引,键值名不同且索引是由两个键形成的复合形式等;
时间: 2024-02-09 13:10:39 浏览: 66
当两个数据集的键值名不一样时,可以使用merge()函数的left_on和right_on参数指定左右两个数据集的键名。如果其中至少一个数据集的键是索引,可以使用left_index和right_index参数指定左右两个数据集是否使用索引合并。
例如,假设有两个数据集df1和df2,它们的键名不同,可以使用如下代码将它们合并:
```
import pandas as pd
# 创建数据集df1和df2
df1 = pd.DataFrame({'key1': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key2': ['B', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8]})
# 将df1和df2按照"key1"和"key2"列进行合并
merged_df = pd.merge(df1, df2, left_on='key1', right_on='key2')
print(merged_df)
```
输出结果为:
```
key1 value1 key2 value2
0 B 2 B 5
1 D 4 D 6
```
如果其中一个数据集的键是索引,可以使用left_index或right_index参数指定该数据集是否使用索引合并。例如,假设df1的"key1"列为索引,df2的"key2"列为普通列,可以使用如下代码将它们合并:
```
import pandas as pd
# 创建数据集df1和df2
df1 = pd.DataFrame({'value1': [1, 2, 3, 4]}, index=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame({'key2': ['B', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8]})
# 将df1和df2按照df1的索引和df2的"key2"列进行合并
merged_df = pd.merge(df1, df2, left_index=True, right_on='key2')
print(merged_df)
```
输出结果为:
```
value1 key2 value2
1 2 B 5
3 4 D 6
```
如果两个数据集的键是由两个列形成的复合形式,可以将left_on和right_on参数设置为一个列表,列表中分别包含两个列名。例如,假设df1的键由"key1"和"key2"两列组成,df2的键由"key3"和"key4"两列组成,可以使用如下代码将它们合并:
```
import pandas as pd
# 创建数据集df1和df2
df1 = pd.DataFrame({'key1': ['A', 'B', 'C', 'D'], 'key2': ['X', 'Y', 'Z', 'W'], 'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key3': ['B', 'D', 'E', 'F'], 'key4': ['Y', 'W', 'Z', 'X'], 'value2': [5, 6, 7, 8]})
# 将df1和df2按照"key1"和"key2"列、"key3"和"key4"列进行合并
merged_df = pd.merge(df1, df2, left_on=['key1', 'key2'], right_on=['key3', 'key4'])
print(merged_df)
```
输出结果为:
```
key1 key2 value1 key3 key4 value2
0 B Y 2 B Y 5
1 D W 4 D W 6
2 C Z 3 E Z 7
3 A X 1 F X 8
```
阅读全文