给定一个如下所示的数据框和列表:
data = {'Day':['Sunday','Monday','Tuesday','Sunday','Sunday','Monday'],
'Apple_Kroger':[0,0,0,0,0,0],
'Pear_Publix':[0,0,0,0,0,0],
'Banana_Wholefoods':[0,0,0,0,0,0],
'Kiwi_Amazon':[0,0,0,0,0,0],
'Melon_Market':[0,0,0,0,0,0],
'Berry_Target':[0,0,0,0,0,0]}
(output)
Day Apple_Kroger Pear_Publix Banana_Wholefoods Kiwi_Amazon Melon_Market Berry_Target
0 Sunday 0 0 0 0 0 0
1 Monday 0 0 0 0 0 0
2 Tuesday 0 0 0 0 0 0
3 Sunday 0 0 0 0 0 0
4 Sunday 0 0 0 0 0 0
5 Monday 0 0 0 0 0 0
list_val = [Apple_Kroger, Kiwi_Amazon, Melon_Market]
Index = 4
如何将列名称与列表中的列名称相同的列值(针对特定索引)设置为 1。最终,我希望输出数据帧如下所示:
Day Apple_Kroger Pear_Publix Banana_Wholefoods Kiwi_Amazon Melon_Market Berry_Target
0 Sunday 0 0 0 0 0 0
1 Monday 0 0 0 0 0 0
2 Tuesday 0 0 0 0 0 0
3 Sunday 0 0 0 0 0 0
4 Sunday 1 0 0 1 1 0
5 Monday 0 0 0 0 0 0
list_val = [Apple_Kroger, Kiwi_Amazon, Melon_Market]
Index = 4
目前,我在使用 df.iloc 与列表中的值结合使用此或任何特定索引值的这些更改时遇到了一些麻烦。任何帮助将不胜感激。
最佳答案
像这样吗?您可以使用 loc
设置值,因为您有列标签。
df.loc[index, list_val] = 1
df
Day Apple_Kroger Pear_Publix Banana_Wholefoods Kiwi_Amazon Melon_Market Berry_Target
0 Sunday 0 0 0 0 0 0
1 Monday 0 0 0 0 0 0
2 Tuesday 0 0 0 0 0 0
3 Sunday 0 0 0 0 0 0
4 Sunday 1 0 0 1 1 0
5 Monday 0 0 0 0 0 0
关于python - 如果列表值对应于列名,如何将列值设置为一(由行索引指定)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65066802/