有没有最好的方法来做这样的事情?
假设我有以下数据帧:
A B
0 1 1
1 1 2
2 2 3
3 2 4
4 2 5
我想得到这样的字典:
{1: [1, 2], 2:[3, 4, 5]}
请记住,列表具有不同的长度,因为值1
出现两次,值2
出现三次。如果我尝试
df.set_index('A').to_dic('list')
Pandas 只保留 B 中每个值的最后一个值,返回以下字典:
{1:[2], 2:[5]
将DataFrame.groupby
与GroupBy.apply
一起使用list
表示Series
,然后Series.to_dict
:
d = df.groupby('A')['B'].apply(list).to_dict()
print (d)
{1: [1, 2], 2: [3, 4, 5]}
您可以按A
分组,并将B
中的值转换为列表:
result = {key: group['B'].tolist() for key, group in df.groupby('A')}
print(result)
输出
{1: [1, 2], 2: [3, 4, 5]}