如何根据字符匹配条件交换数据集id1与id2列的值?
实现id1和id2列按指定规则交换值
用Pandas可以轻松实现这个需求,核心是借助str.contains()筛选出需要交换的行,再对列值进行互换:
1. 导入依赖并构造数据集
import pandas as pd # 构造你的数据集 data = { 'id1': ['first10', 'second3', 'first2', 'first10', 'second8'], 'id2': ['second5', 'first19', 'second7', 'second10', 'first22'], 'val': [10, 14, 8, 1, 9] } df = pd.DataFrame(data)
2. 筛选并交换列值
# 生成掩码:筛选出id1不包含"first"的行 swap_mask = ~df['id1'].str.contains('first') # 对符合条件的行,交换id1和id2的值 df.loc[swap_mask, ['id1', 'id2']] = df.loc[swap_mask, ['id2', 'id1']].values
3. 查看结果
执行上述代码后,输出的DataFrame即为你期望的格式:
id1 id2 val 0 first10 second5 10 1 first19 second3 14 2 first2 second7 8 3 first10 second10 1 4 first22 second8 9
逻辑说明
df['id1'].str.contains('first')逐行判断id1列是否包含"first",返回布尔值序列- 前缀
~对布尔值取反,得到需要交换列值的行的掩码 - 通过
df.loc定位到这些行的id1和id2列,将其值替换为对应行的id2和id1值,完成交换
内容的提问来源于stack exchange,提问作者gh1222
相关产品推荐
相关产品推荐

