我有一个有很多名字的数据框
df['NAME']=['Zamboni, Clemente', 'Strada, Gino', 'Zeldina, Laura', 'Silvestri, Simone']
具有与键相同名称和列表值的字典
mydict={'Zamboni, Clemente' : [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110],
'Strada, Gino' : [103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114],
'Zeldina, Laura' : [111, 112, 113],
'Silvestri, Simone' : [113]}
以及包含字典中出现的所有唯一数字的列表:
mylist = [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114]
我想为mylist中的每个元素创建一个虚拟变量,如果该元素位于与名称相关联的字典的值中,则该值等于1:因此对于“Silvestri,Simone”,除“113”外,所有虚拟变量的值都应为0。你知道吗
以下是我的最新尝试:
for k in df['NAME']:
if k in mydict:
for c in mylist:
if c in mydict[k]:
df[c][k] = 1
else:
df[k,c] = 0
任何暗示都将不胜感激!你知道吗
您可以使用
df.pivot
:收益率
我认为unutbu的回答相当优雅,但似乎没有认识到“斯特拉达,吉诺”,“泽尔迪娜,劳拉”,“西尔维斯特里,西蒙娜”都认同这一点。你可以这样修。你知道吗
对于你的问题,关键是你的
dict
暗示'Zeldina, Laura' 'Zamboni, Clemente' 'Silvestri, Simone' 'Strada, Gino'
是观察值,而[100 - 114]
是观察值。你想做的其实是反过来。您希望将[100 - 114]
设置为观察标签,而'Zeldina, Laura' 'Zamboni, Clemente' 'Silvestri, Simone' 'Strada, Gino'
是它们的4个可能值。所以一些手工处理的格式转换是不可避免的。你知道吗相关问题 更多 >
编程相关推荐