Python Pandas merge() 函数:如何保持原始数据数量和顺序
在使用 Pandas 的 merge() 函数进行数据合并时,可以通过指定参数来控制不改变原始数据的数量和顺序。
-
使用参数
how='outer'或how='inner'来指定合并方式:'outer'表示保留所有原始数据,包括两个数据集中都存在的数据和只存在于其中一个数据集中的数据。'inner'表示只保留两个数据集中都存在的数据。
-
使用参数
on来指定合并所依据的列,可以确保数据顺序不变。 -
如果需要进行多列合并,可以使用参数
left_on和right_on来指定左右两个数据集中用于合并的列。
例如,可以使用以下代码来合并两个 DataFrame 并保持原始数据的顺序:
import pandas as pd
# 创建两个 DataFrame
left_df = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
right_df = pd.DataFrame({'key': ['A', 'C', 'D'], 'value': [4, 5, 6]})
# 使用 'outer' 合并方式并指定合并依据列
merged_df = pd.merge(left_df, right_df, on='key', how='outer')
print(merged_df)
输出结果如下:
key value_x value_y
0 A 1 4
1 B 2 NaN
2 C 3 5
3 D NaN 6
可以看到,使用 'outer' 合并方式,所有数据都被保留,且数据顺序保持不变。
此外,还可以使用 'inner' 合并方式,只保留两个数据集中都存在的数据:
# 使用 'inner' 合并方式
merged_df = pd.merge(left_df, right_df, on='key', how='inner')
print(merged_df)
输出结果如下:
key value_x value_y
0 A 1 4
1 C 3 5
使用 'inner' 合并方式,只保留了两个数据集中都存在的 key 为 'A' 和 'C' 的数据,且数据顺序保持不变。
需要注意的是,如果合并依据的列中存在重复值,则合并后的数据可能会出现重复行。为了避免这种情况,可以先使用 drop_duplicates() 方法去除重复行。
原文地址: https://www.cveoy.top/t/topic/oi2X 著作权归作者所有。请勿转载和采集!