使用特定值作为参考替换数据框行中的值
我有一个这样的数据表:
solution_id 0 1 2 3
0 26688 NaN NaN NaN NaN
1 26689 NaN NaN NaN NaN
2 26690 NaN NaN NaN NaN
3 26691 NaN NaN NaN NaN
4 26692 NaN NaN NaN NaN
... ... .. .. .. ..
10398 37086 NaN NaN NaN NaN
10399 37087 NaN NaN NaN NaN
10400 37088 NaN NaN NaN NaN
10401 37089 NaN NaN NaN NaN
10402 37090 NaN NaN NaN NaN
[10403 rows x 5 columns]
我将会收到一个solution_id和一个包含4个值的列表(比如说 [True, False, False, True])。我需要做的是找到对应的solution_id所在的那一行,然后把后面的四列(0, 1, 2, 3)替换成这个列表里的值。
我试过用类似这样的代码:
filter_ = (df['solution_id'] == solution_id)
df.loc[filter_] = [solution_id] + results
或者甚至:
idx = df['solution_id'].loc[df['solution_id'] == solution_id].index[0]
df.loc[idx] = [solution_id] + results
但是这两种方法都不行,我也不太明白为什么。第一种方法运行了,但没有任何效果;第二种方法则提示索引是空的,所以我猜可能是过滤条件没有找到任何东西。问题是,我知道每个solution_id肯定都在里面。所以我不知道该怎么办。
1 个回答
1
类似于Pandas一次更新多个列的内容
list1 = [True, False, False, True]
solution_id = 26690
df.loc[df["solution_id"] == solution_id, [0,1,2,3]] = list1