<p>我认为unutbu的回答相当优雅,但似乎没有认识到“斯特拉达,吉诺”,“泽尔迪娜,劳拉”,“西尔维斯特里,西蒙娜”都认同这一点。你可以这样修。你知道吗</p>
<p>对于你的问题,关键是你的<code>dict</code>暗示<code>'Zeldina, Laura' 'Zamboni, Clemente' 'Silvestri, Simone' 'Strada, Gino'</code>是观察值,而<code>[100 - 114]</code>是观察值。你想做的其实是反过来。您希望将<code>[100 - 114]</code>设置为观察标签,而<code>'Zeldina, Laura' 'Zamboni, Clemente' 'Silvestri, Simone' 'Strada, Gino'</code>是它们的4个可能值。所以一些手工处理的格式转换是不可避免的。你知道吗</p>
<pre><code>import pandas as pd
import numpy as np
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]
temp = []
for _, value in mydict.items():
temp.append(pd.Series(value, index=value).reindex(mylist))
df = pd.concat(temp, axis=1)
df.columns = list(mydict.keys())
df.apply(lambda col: np.where(col.isnull(), 0, 1))
Out[40]:
Zeldina, Laura Zamboni, Clemente Silvestri, Simone Strada, Gino
100 0 1 0 0
101 0 1 0 0
102 0 1 0 0
103 0 1 0 1
104 0 1 0 1
105 0 1 0 1
106 0 1 0 1
107 0 1 0 1
108 0 1 0 1
109 0 1 0 1
110 0 1 0 1
111 1 0 0 1
112 1 0 0 1
113 1 0 1 1
114 0 0 0 1
</code></pre>