【发布时间】:2022-01-18 07:23:18
【问题描述】:
在翻转迭代时,如果满足条件,则更改值。 但是,原始数据框保持不变。 有没有办法解决这个问题?
(我知道 itertuples,iterrows loc 可以使用。但我想使用值。(更快))
import panda as pd
df = pd.read_csv(filename)
for value in df.values:
if A:
value[2] = 3
print(value) # changed
df.to_csv(newfilename) # unchanged
【问题讨论】:
-
循环值并不快。使用矢量代码。您的代码不起作用,因为您修改了副本。
-
如果它不起作用,性能就无关紧要了。如果您只是想更改某些字段,为什么要涉及非常大且加载缓慢的 pandas 模块?只需要一行一行地做。
-
不,使用值比 itertuples、iterrows、loc 更丰富。我刚刚使用 iat 解决,count idx 然后使用 df.iat[count, 2] = 3 而不是 value[2] = 3
标签: python pandas csv iteration