替换循环内的Pandas数据框中的值

时间:2014-01-26 18:51:36

标签: python pandas

我正在尝试遍历pandas数据框,并在满足特定条件时替换某些列中的值。我发现通常有更简单的方法可以做到这一点,但在我的具体示例中,我需要一个循环,因为一行的结果可能取决于前一行。以下是出现问题的可重复示例。当我尝试替换文本时,它不会替换它。

import pandas as pd
df = pd.DataFrame({"A": ["I", "AM", "NOT", "WORKING", "!"], "B": [20, 30, 10, 40, 50], "C": [32, 234, 23, 23, 42523]})


for index, row in df.iterrows():
    row['A'] = "I am working!"

print(df)

打印哪些:

         A   B      C
0        I  20     32
1       AM  30    234
2      NOT  10     23
3  WORKING  40     23
4        !  50  42523

1 个答案:

答案 0 :(得分:11)

您可以使用.loc

写入原始帧
>>> for index, row in df.iterrows():
...     df.loc[index, "A"] = "I am working! {}".format(row["B"])
...     
>>> df
                  A   B      C
0  I am working! 20  20     32
1  I am working! 30  30    234
2  I am working! 10  10     23
3  I am working! 40  40     23
4  I am working! 50  50  42523

[5 rows x 3 columns]

除此之外:即使一行依赖于前一行,也可以有方法对其进行矢量化,但我承认,有时候手动循环方式更简单。