python - 如果列表值对应于列名,如何将列值设置为一(由行索引指定)?

标签 python pandas list

给定一个如下所示的数据框和列表:

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/

相关文章:

python - Conda 环境未显示在 VS Code 中

python - Flask 无法识别两个 URL 参数

python - 删除多索引级别但保留列名 - pandas

python - Scikit-Learn/Pandas : make a prediction using a saved model based on user input

list - 访问 Ziplist 中的位置

python - 如何从工具栏按钮单击和/或 ctrl + 鼠标滚轮缩放/缩放 QTextEdit 区域

python - 从文件中删除停用词

python - 如何使用 `openpyxl` 库在 Excel 中的合并单元格中写入?

java - 列表中的节点

mysql - 确定多对多关系中的内容