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

如何为列表中的几列填充数据框的值?

如何为列表中的几列填充数据框的值?

白衣非少年 2022-07-19 15:54:39
我有一个列表列表,labels = [['A','B','D','E'], ['G','J','H'],['C','H']]我有一个数据框          A    B    C    D    E    G    H    J         NAN  NAN  NAN  NAN  NAN  NAN  NAN  NAN  Df =   NAN  NAN  NAN  NAN  NAN  NAN  NAN  NAN         NAN  NAN  NAN  NAN  NAN  NAN  NAN  NAN   我想一次取一个列表,并根据 Df 中的列名检查它的值,如果列名与列表中的字符串匹配,则用值 1 填充其单元格,否则填充 0。预期输出:          A    B    C    D    E    G    H    J          1    1    0    1    1    0    0    0   Df =    0    0    0    0    0    1    1    1          0    0    1    0    0    0    1    0如果选择第一个列表,则必须根据上述条件填充 Df 的第一行。同样,第二个列表应该填充 Df 的第二行。
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这是一个粗略的方法:


for row, col in enumerate(labels):

    df.loc[row,col] = 1

print(df.fillna(0).astype(int))

输出:


   A  B  C  D  E  G  H  J

0  1  1  0  1  1  0  0  0

1  0  0  0  0  0  1  1  1

2  0  0  1  0  0  0  1  0


查看完整回答
反对 回复 2022-07-19
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您可以为此使用列表推导并遍历标签


[df.set_value(i,x,1)  for i,x in enumerate(labels)]    

df.fillna(0).astype('int8')

输出


    A   B   C   D   E   G   H   J

0   1   1   0   1   1   0   0   0

1   0   0   0   0   0   1   1   1

2   0   0   1   0   0   0   1   0


查看完整回答
反对 回复 2022-07-19
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

import pandas as pd


labels = [['A','B','D','E'], ['G','J','H'],['C','H']]

unique = set(x for l in labels for x in l)


data = []

for item in labels:

    raw = {}

    for value in unique:

        if value in item:

            raw[value] = 1

        else:

            raw[value] = 0

    data.append(raw)


df = pd.DataFrame.from_dict(data)

df = df.reindex(sorted(df.columns), axis=1)

输出:


   A  B  C  D  E  G  H  J

0  1  1  0  1  1  0  0  0

1  0  0  0  0  0  1  1  1

2  0  0  1  0  0  0  1  0


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号