import numpy as np
import pandas as pd
df = pd.DataFrame([[1, 2, 3, 4],
[3, 6, 9, 12]], columns=["A", "B", "C", "D"])
x = [5, 7, 8, 10]
for i in x:
for j in range(len(df.iloc[1, :])):
if df.iloc[1, j] > i:
df.iloc[0, j] = 555
print(df)
在此代码示例中,我希望,如果在一次迭代中第二行 df 中的数字大于 x,则在第一行中的相同索引处我们将其替换为 555,从而产生 4 个新的 df 输出。
但答案是这样的:当我运行循环时,它对 x=5 执行此操作,然后对于其余部分,它会生成与 x=5 相同的结果,换句话说,它会重复
A B C D
0 1 555 555 555
1 3 6 9 12
A B C D
0 1 555 555 555
1 3 6 9 12
A B C D
0 1 555 555 555
1 3 6 9 12
A B C D
0 1 555 555 555
1 3 6 9 12
当您第一次执行循环时,您会更改原始数据帧。您需要使用副本。作为奖励,我建议不要使用第二个循环,而是使用 pandas 方法。
单线