【发布时间】:2021-01-10 21:47:32
【问题描述】:
我有一个看起来有点像这样的 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'
必须有一个我没有看到的简单修复。提前致谢!
【问题讨论】:
-
列
END_M在哪里? -
Ups,这是一个错字!它就在这里,不在我的代码中
-
旁注:FWIW,对非完全覆盖的 stuff 有一个百分比对报告很有帮助。在您的情况下为 76.33%。如果有的话,
TOTAL_COVERAGE=yes/no应该从'END_S' == 'END_D'的 % 或更好的值计算出来。
标签: python pandas lambda keyerror