因此,我尝试在pandas中遍历我的数据帧,如果两列的值等于某个值,那么我在该位置更改了一个值,这是我一直使用的循环的简化版本(我更改了if/else函数的值,因为最初使用的是regex之类的东西,非常复杂):
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
:你也可以用iat
示例:df.iat[第i行,第j列]
相关问题 更多 >
编程相关推荐