Python 使用每行的第一个值作为键,将数据帧行转换为列表的dict 设置

Python 使用每行的第一个值作为键,将数据帧行转换为列表的dict 设置,python,python-3.x,pandas,dataframe,dictionary,Python,Python 3.x,Pandas,Dataframe,Dictionary,我有一个数据帧: import pandas as pd 即: (使用,) 问题 我想把上面的数据帧转换成这个dict: +----+-----+-----+-----+-----+ | | A | B | C | D | |----+-----+-----+-----+-----| | 0 | A0 | B0 | C0 | D0 | | 1 | A1 | B1 | C1 | D1 | | 2 | A2 | B2 | C2 | D2 | |

我有一个数据帧:

import pandas as pd
即:

(使用,)


问题 我想把上面的数据帧转换成这个dict:

+----+-----+-----+-----+-----+
|    | A   | B   | C   | D   |
|----+-----+-----+-----+-----|
|  0 | A0  | B0  | C0  | D0  |
|  1 | A1  | B1  | C1  | D1  |
|  2 | A2  | B2  | C2  | D2  |
|  3 | A3  | B3  | C3  | D3  |
+----+-----+-----+-----+-----+
每行的第一个元素是键,数据帧的行是dict as list的值


解决 A 使用
.iterrows()
,其中:

B 使用
.groupby()

它们都能产生所需的输出


问题: 有没有更有效的方法来实现上述目标?


如果有一种方法可以用于循环,即,那就太好了。

使用
设置索引
,然后
agg
使用
axis=1上的
列表
并使用
系列。要记录

gbdict=df.groupby('A').apply(lambda row: row.to_dict(orient='row')).to_dict()
{key: list(gbdict[key][0].values()) for key in gbdict.keys()}
结果:

dct = df.set_index(df['A']).agg(list, axis=1).to_dict()

像这样的东西,我想这会比
agg
~

{'A0': ['A0', 'B0', 'C0', 'D0'],
 'A1': ['A1', 'B1', 'C1', 'D1'],
 'A2': ['A2', 'B2', 'C2', 'D2'],
 'A3': ['A3', 'B3', 'C3', 'D3']}
gbdict=df.groupby('A').apply(lambda row: row.to_dict(orient='row')).to_dict()
{key: list(gbdict[key][0].values()) for key in gbdict.keys()}
dct = df.set_index(df['A']).agg(list, axis=1).to_dict()
{'A0': ['A0', 'B0', 'C0', 'D0'],
 'A1': ['A1', 'B1', 'C1', 'D1'],
 'A2': ['A2', 'B2', 'C2', 'D2'],
 'A3': ['A3', 'B3', 'C3', 'D3']}
yourdict = dict(zip(df.A,df.values.tolist()))
Out[123]: 
{'A0': ['A0', 'B0', 'C0', 'D0'],
 'A1': ['A1', 'B1', 'C1', 'D1'],
 'A2': ['A2', 'B2', 'C2', 'D2'],
 'A3': ['A3', 'B3', 'C3', 'D3']}