[英]DataFrame fastest way to update rows without a loop
创建场景:
假设 dataframe 有两个系列,其中A
是输入, B
是A[index]*2
的结果:
df = pd.DataFrame({'A': [1, 2, 3],
'B': [2, 4, 6]})
假设我收到了 100k 行 dataframe 并在其中搜索错误(此处B->0
无效):
df = pd.DataFrame({'A': [1, 2, 3],
'B': [2, 0, 6]})
使用搜索无效行
invalid_rows = df.loc[df['A']*2 != df['B']]
我现在有invalid_rows
,但我不确定用A[index]*2
的结果覆盖原始df
中无效行的最快方法是什么?
使用iterrows()
迭代df
是一种选择,但如果df
增长,速度会很慢。 我可以以某种方式使用df.update()
吗?
带循环的工作解决方案:
index = -1
for row_index, my_series in df.iterrows():
if myseries['A']*2 != myseries['B']:
df[index]['B'] = myseries['A']*2
但是有没有更快的方法来做到这一点?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.