原始数据如下:
all_names = ['Darren','John','Kate','Mike','Nancy']
list_0 = ['John', 'Mike']
list_1 = ['Kate', 'Nancy']
我想要实现的是一个数据框架,其中列指示列表中出现的名称(1表示正,0表示负),例如:
我尝试了一种方法,即循环列表并通过为缺失的列表添加0来创建新列表,否则为1。
它是笨拙和麻烦的,特别是当列表的数量增加时。
new_list_0 = []
for _ in all_names:
if _ not in list_0:
new_list_0.append(0)
else:
new_list_0.append(1)
new_list_1 = []
for _ in all_names:
if _ not in list_1:
new_list_1.append(0)
else:
new_list_1.append(1)
import pandas as pd
data = [all_names, new_list_0,new_list_1]
column_names = data.pop(0)
df = pd.DataFrame(data, columns=column_names)
输出量:
Darren John Kate Mike Nancy
0 0 1 0 1 0
1 0 0 1 0 1
聪明的方法是什么?
4条答案
按热度按时间wsxa1bj11#
让我们试试
str.get_dummies
和reindex
bfrts1fy2#
您可以使用pandas系列:
anhgbhbe3#
使用,
dict.fromkeys()
+fillna
monwx1rj4#
使用普通的pandas操作和列表解析。
输出