Pandas如何统一DataFrame两列字符串拼接结果 相同元素组合输出一致
实现方法
核心思路是对每行的col1、col2两个值进行统一规则排序后再拼接,保证相同元素对无论输入顺序如何,排序结果一致,最终拼接结果相同。
方法1:apply行遍历(小数据量场景,写法简单)
import pandas as pd df3 = pd.DataFrame({ 'col1':['banana','apple','pie','mango','cola'], 'col2':['apple','banana','mango','cola','mango'], }) # 对每行的两个字符串排序后拼接 df3['col3'] = df3.apply(lambda x: ''.join(sorted([x['col1'], x['col2']])), axis=1)
如果需要和你示例中的输出完全对齐(固定按元素对首次出现的顺序拼接),可以先构建映射字典:
# 构建元素对到首次拼接结果的映射 pair_map = {} def get_union_str(a, b): key = tuple(sorted([a,b])) if key not in pair_map: pair_map[key] = a + b return pair_map[key] df3['col3'] = df3.apply(lambda x: get_union_str(x['col1'], x['col2']), axis=1)
方法2:向量化操作(大数据量场景,性能更高)
import pandas as pd import numpy as np df3 = pd.DataFrame({ 'col1':['banana','apple','pie','mango','cola'], 'col2':['apple','banana','mango','cola','mango'], }) # 按行排序后拼接 arr = np.sort(df3[['col1', 'col2']].values, axis=1) df3['col3'] = arr[:, 0] + arr[:, 1]
运行上述任意符合需求的代码后,即可得到你期望的输出结果:相同元素对无论输入顺序如何,col3值一致。
内容的提问来源于stack exchange,提问作者김도영
相关产品推荐
相关产品推荐

