为了账号安全,请及时绑定邮箱和手机立即绑定

无法更改特定位置的数据框的值

无法更改特定位置的数据框的值

GCT1015 2022-07-26 11:05:43
所以我试图在熊猫中浏览我的数据框,如果两列的值等于某个值,那么我在该位置更改一个值,这是我一直在使用的循环的简化版本(我更改了if/else 函数的值,因为原来使用的是正则表达式和东西,而且非常复杂):pro_cr = ["IgA", "IgG", "IgE"] # CR's considered productiverows_changed = 0prod_to_unk = 0unk_to_prod = 0changed_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:        passprint("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'”我不知道为什么会出现这种情况。没有重复的列。希望这很清楚(如果不让我知道,我会尽力澄清它)。谢谢!
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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

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


查看完整回答
反对 回复 2022-07-26
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

你也可以。

示例:df.iat[iTH 行,jTH 列]


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信