python - 无法更改特定位置数据帧的值

标签 python pandas dataframe

所以我试图在 pandas 中遍历我的数据框,如果两列的值等于某个值,那么我会更改该位置的值,这是我一直在使用的循环的简化版本(我更改了 if/else 函数的值,因为原来使用了正则表达式和其他东西,而且非常复杂):

pro_cr = ["IgA", "IgG", "IgE"] # CR's considered productive
rows_changed = 0
prod_to_unk = 0
unk_to_prod = 0

changed_ids = []

for index in df_sample.index:
    if num=1 and color="red":
        pass
    elif num=2 and color="blue":
        prod_to_unk += 1
        changed_ids.append(df_sample.loc[index, "Sequence ID"])
        df_sample.at[index, "Functionality"] = "unknown"
        rows_changed += 1
    elif num=3 and color="green":
        unk_to_prod += 1
        changed_ids.append(df_sample.loc[index, "Sequence ID"])
        df_sample.at[index, "Functionality"] = "productive"
        rows_changed += 1
    else:
        pass

print("Number of productive columns changed to unknown: {}".format(prod_to_unk))
print("Number of unknown columns changed to productive: {}".format(unk_to_prod))
print("Total number of rows changed: {}".format(rows_changed))

所以主要问题是更改代码:

df_sample.at[index, "Functionality"] = "unknown" # or productive

如果我在没有这些代码行的情况下运行此代码,它会正常工作,它会找到所有正确的位置,告诉我更改了多少位置以及它们的 ID 是什么,我可以用它来验证 CSV 文件。

如果我使用df_sample["Functionality"][index] = "unknown" # or productive代码运行,但检查已更改的行表明它们根本没有更改。

当我使用df.at[row, column] = value时我收到“AttributeError:'BlockManager'对象没有属性'T'”

我不知道为什么会出现这种情况。没有重复的列。希望这是清楚的(如果没有让我知道,我会尽力澄清)。谢谢!

最佳答案

说实话,我从未使用过 df.at - 但请尝试使用 df.loc:

df_sample.loc[index, "Functionality"] = "unknown"

关于python - 无法更改特定位置数据帧的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198296/

相关文章:

python - 无法通过 ansible 从本地主机运行 python 脚本

python - Flask-上传 IOError : [Errno 2] No such file or directory

python - 将两个 DataFrame 合并为 block

python - 数据帧 : Group separate subcolumns with identical column names together

python - 在特定条件下填充 Pandas 数据框列

python - 如何在python中的单个for循环中使用2个索引变量

python - 错误的维度 XOR 神经网络 python

python - Pandas unstack 问题 : ValueError: Index contains duplicate entries, 无法 reshape

python - 从多个 pandas 数据框列绘制图表

pandas - 在Fillna中使用自定义函数系列