如果被视为索引的列中的值多次出现,如何从数据帧获取保留所有值的字典?



有没有最好的方法来做这样的事情?

假设我有以下数据帧:

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.groupbyGroupBy.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]}

最新更新