基于Pandas实现匹配特定字符串时向左列复制值至当前列
解决Pandas中匹配特定字符串时复制左侧列值的问题
嘿,这事儿好办!咱们直接用Pandas的条件定位赋值就能轻松实现你要的效果——当City列值为'not available'时,把同一行左边的Country列值替换过来。
先看你的示例数据:
import pandas as pd df = pd.DataFrame({'Country': ['France','England','U.S.A','Spain'], 'City': ['Paris','London','not available','not available']}) print(df)
输出初始数据:
Country City 0 France Paris 1 England London 2 U.S.A not available 3 Spain not available
核心解决方案
用df.loc精准定位需要修改的行和列,直接赋值即可:
# 定位City列等于'not available'的行,将对应行的Country值赋值给City df.loc[df['City'] == 'not available', 'City'] = df['Country'] # 查看修改后的数据 print(df)
修改后的输出结果:
Country City 0 France Paris 1 England London 2 U.S.A U.S.A 3 Spain Spain
通用拓展(如果不知道左侧列名,只看位置)
要是你需要更灵活的方式——比如不管列名是什么,只要当前列匹配特定值就取它左边一列的值,可以通过列的索引位置来实现:
# 获取目标列(这里是City)的索引位置 target_col_idx = df.columns.get_loc('City') # 左侧列就是索引减1对应的列 left_col_name = df.columns[target_col_idx - 1] # 执行替换逻辑 df.loc[df['City'] == 'not available', 'City'] = df[left_col_name]
这种方式即使后续列名调整,只要列的相对位置不变,代码依然能正常工作。
内容的提问来源于stack exchange,提问作者Gustavo Bakker
相关产品推荐
相关产品推荐

