python - Pandas 数据框 : Why I can't change the value of one column based on value of another through row iteration?

标签 python pandas series

我想根据另一列的值更改一列的值。例如,给定以下 DF:

   Freq TOC
1    10  NA
2    20  NA
3    30  NA

for index, row in df.iterrows():
    if row["Freq"] == 20:
        row["TOC"] = True

我希望:

   Freq TOC
1    10  NA
2    20  True
3    30  NA

但是什么都没有改变。怎么了?谢谢。

最佳答案

pd.DataFrame.iterrows为 Python 级循环中的每一行返回一个系列,而不是指向数据框的动态链接。更高效的是,您可以使用列式矢量化方法而不是行式循环(假设您对 1 == True 感到满意):

df['TOC'] = np.where(df['Freq'] == 20, True, np.nan)

更惯用的是分配一个 bool 系列,即仅True/False 值:

df['TOC'] = df['Freq'] == 20

什么是在你的循环中使用索引,虽然这会很低效:

for index, row in df.iterrows():
    if row['Freq'] == 20:
        df.loc[index, 'TOC'] = True

关于python - Pandas 数据框 : Why I can't change the value of one column based on value of another through row iteration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53464071/

相关文章:

Python 共享对象模块命名约定

python - 在跳过第一行并使用第二行作为 pandas 中符号的原始刻度数据的标题时,无法读取 csv

python - Pandas 过滤串联的多个子字符串

python - 如何使用 timedelta 从 pandas 系列中选择最后一个值?

Python Split 用法

python - 使用 Beautiful Soup 从损坏的 <a> 标签中检索内容

python - 在 django/python 中组织通用代码

python - Pandas - groupby "longest"带薪休假 (PTO) 持续时间

python - 如何根据另一列的过滤器或条件删除数据帧的重复行?

python - 如何通过计算 pandas 数据框中的值来创建新系列?