如何基于Pandas DataFrame的col1列条件,用apply修改col2指定值
解决方案
要实现你想要的效果,关键是只对符合col1条件的行中的col2列应用你的选择函数,而不是修改整个col2列。这里有个简洁的实现方式:
import pandas as pd # 初始化你的DataFrame df = pd.DataFrame({'col1': [69, 77, 88], 'col2': ['barf;', 'barf;', 'barfoo']}) # 定义你的选择函数 def selection_func(string): ''' 当字符串为'barf;'时返回'a' ''' if string == 'barf;': return 'a' else: return string # 定义筛选条件 condition = (df['col1'] == 69) | (df['col1'] == 88) # 仅对符合条件的行的col2列应用函数 df.loc[condition, 'col2'] = df.loc[condition, 'col2'].apply(selection_func) # 打印结果 print(df)
输出结果:
col1 col2 0 69 a 1 77 barf; 2 88 barfoo
关键逻辑说明:
df.loc[condition, 'col2']是Pandas里精准定位单元格的方法:它会筛选出所有满足col1 == 69或col1 == 88的行,然后只选中这些行的col2列。- 对选中的
col2值应用selection_func后,只有符合条件的行才会被修改:比如第0行的barf;被转换成a,第2行的barfoo因为不满足函数判断,保持原样;而col1=77的行不在筛选范围内,所以col2完全不受影响,完美匹配你的期望输出。
内容的提问来源于stack exchange,提问作者Warrior404
相关产品推荐
相关产品推荐

