<p>其他人可能会附和一个纯熊猫解决方案,但在紧要关头,我认为这应该为你工作。您基本上可以动态创建字典,而是为每行中的值编制索引。</p>
<pre><code>d = {df.loc[idx, 'first']: [df.loc[idx, 'second'], df.loc[idx, 'third']] for idx in range(df.shape[0])}
d
Out[5]:
{0: [10.199999999999999, 'a'],
1: [5.7000000000000002, 'b'],
2: [7.4000000000000004, 'c'],
3: [17.100000000000001, 'd'],
4: [86.109999999999999, 'e']}
</code></pre>
<p>编辑:您也可以这样做:</p>
<pre><code>df['new'] = list(zip(df['second'], df['third']))
df
Out[25]:
first second third fourth new
0 0 10.20 a z (10.2, a)
1 1 5.70 b zz (5.7, b)
2 2 7.40 c zzz (7.4, c)
3 3 17.10 d zzzz (17.1, d)
4 4 86.11 e zzzzz (86.11, e)
df = df[['first', 'new']]
df
Out[27]:
first new
0 0 (10.2, a)
1 1 (5.7, b)
2 2 (7.4, c)
3 3 (17.1, d)
4 4 (86.11, e)
df.set_index('first').to_dict()
Out[28]:
{'new': {0: (10.199999999999999, 'a'),
1: (5.7000000000000002, 'b'),
2: (7.4000000000000004, 'c'),
3: (17.100000000000001, 'd'),
4: (86.109999999999999, 'e')}}
</code></pre>
<p>在这种方法中,首先创建列表(或元组),保留其他列,然后“删除”其他列。这基本上是你最初的方法,修改过的。</p>
<p>如果你真的想要列表而不是元组,那么只要<code>map</code>在该<code>'new'</code>列上输入<code>list</code>:</p>
<pre><code>df['new'] = list(map(list, zip(df['second'], df['third'])))
</code></pre>