2024-09-28 23:51:00 发布
网友
Column A 2C GAD D2 6F ABCDE 2C 1B D2 6F ABC 1 0 1 1 0 2C 1248 Bulers 1 0 0 0 0
上面是我要创建的数据帧
第一行表示字段名。我想采用的逻辑如下: 如果列名在“column A”行中,则为1,否则为0
我在Google上搜索了一个与我类似的问题的代码,这样我就可以测试它并逆向设计出一个解决方案。不幸的是,我什么也没找到
否则,我会张贴一些代码,我试图解决这个问题,但我真的没有线索
您可以使用列表理解基于列和行创建所需数据:
In [39]: row =['2C 1B D2 6F ABC', '2C 1248 Bulers'] In [40]: columns=['2C', 'GAD', 'D2', '6F', 'ABCDE'] In [41]: df = pd.DataFrame([[int(k in r) for k in columns] for r in row], index = ['2C 1B D2 6F ABC','2C 1248 Bulers'], columns=['2C', 'GAD', 'D2', '6F', 'ABCDE']) In [42]: df Out[42]: 2C GAD D2 6F ABCDE 2C 1B D2 6F ABC 1 0 1 1 0 2C 1248 Bulers 1 0 0 0 0
如果您想要纯熊猫方法,可以使用pd.Series()而不是list来保存列和行,然后使用Series.apply和Series.str.contains来获得所需的结果:
pd.Series()
Series.apply
Series.str.contains
In [73]: data = columns.apply(row.str.contains).astype(int).transpose() In [74]: df = pd.DataFrame(data.values, index = ['2C 1B D2 6F ABC','2C 1248 Bulers'], columns=['2C', 'GAD', 'D2', '6F', 'ABCDE']) In [75]: df Out[75]: 2C GAD D2 6F ABCDE 2C 1B D2 6F ABC 1 0 1 1 0 2C 1248 Bulers 1 0 0 0 0
您可以使用列表理解基于列和行创建所需数据:
如果您想要纯熊猫方法,可以使用
pd.Series()
而不是list来保存列和行,然后使用Series.apply
和Series.str.contains
来获得所需的结果:相关问题 更多 >
编程相关推荐