首页 > 解决方案 > 尝试使用 apply 对 Panda DataFrame 中的不同键进行操作

问题描述

我有一个看起来像这样的 Panda DataFrame:

df = pd.DataFrame({'ID' : ['O60829','O60341','Q9H1R3'], 'TOTAL_COVERAGE' : ['yes','yes','no'], 'BEG_D' : ['1','1','500'], 'END_D' : ['102','25','600'], 'BEG_S' : ['1','1','1'], 'END_S': ['102','25','458']})

我想遍历每一行,检查“TOTAL_COVERAGE”的值,如果是“是”,对其他值执行数学运算,即:

for index, row in df.iterrows():
    df['%']  = df.apply(lambda x : ((int(x['END_S'])*100)/int(x['END_D'])) if x['TOTAL_COVERAGE'] == 'yes' else '')

但我得到了错误:KeyError: 'TOTAL_COVERAGE' 必须有一个我没有看到的简单修复。提前致谢!

标签: pythonpandaslambdakeyerror

解决方案


您可以在没有iterrowsand的情况下apply通过直接等同来做到这一点:

df['%'] = ''
df.loc[df['TOTAL_COVERAGE'] == 'yes', '%'] = 
    df['END_S'].astype(int) * 100 / df['END_D'].astype(int)

推荐阅读