擅长:python、mysql、java
<p>使用<code>groupby</code>和<code>apply</code>,然后是最后的<code>to_dict</code>调用。你知道吗</p>
<pre><code>df.groupby('index').value.apply(list).to_dict()
# {0: ['val1', 'val2', 'val3', 'val4', 'val5'],
# 1: ['val6', 'val7', 'val8', 'val9', 'val10'],
# 2: ['val11', 'val12', 'val13', 'val14']}
</code></pre>
<hr/>
<p>另一种方法是使用<code>setdefault</code>遍历行并附加到字典中的值。你知道吗</p>
<pre><code>d = {}
for k, v in zip(df['index'], df.value):
d.setdefault(k, []).append(v)
print(d)
# {0: ['val1', 'val2', 'val3', 'val4', 'val5'],
# 1: ['val6', 'val7', 'val8', 'val9', 'val10'],
# 2: ['val11', 'val12', 'val13', 'val14']}
</code></pre>
<p>我的测试表明,对于中等大小的帧,这实际上比<code>groupby</code>的性能要好。当<code>groupby</code>执行排序时(是否稳定是实现细节),这也将保留值排序。你知道吗</p>