我有一个像这样的数据框
col1 col2 col3 col4 action_id
0 1 2 2 0 a, apple
1 1 2 3 5 b, apple
2 0.2 0.3 8 1 c, apple
3 0.2 0.02 1 2 a, apple
4 11 11 22 11 b, apple
我想把这个 Dataframe 转换成dict,把action_id作为键,把others作为值。
我希望我的输出是这样的:
{(1, 'a', 'apple'): array([[1, 2, 2, 0]]),
(1, 'b', 'apple'): array([[1, 2, 3, 5]]),
(1, 'c', 'apple'): array([[0.2, 0.3, 8, 1]]),
(2, 'a', 'apple'): array([[0.2, 0.02, 1, 2]]),
(2, 'b', 'apple'): array([[11, 11, 22, 11]])}
我试过这个方法data2d = var.set_index('action_id').T.to_dict('list')
将var
视为我的 Dataframe 。
但是这个方法用重复的键覆盖了dict中的值,并且只返回了重复键的最后一个值。有没有什么方法可以让重复的键也有不同的值?
{('c', 'apple'): array([[0.2, 0.3, 8, 1]]),
('a', 'apple'): array([[0.2, 0.02, 1, 2]]),
('b', 'apple'): array([[11, 11, 22, 11]])}
- 编辑**
我做了一点小改动,在action_id
中添加了1个元素,现在我的框架看起来像这样:
col1 col2 col3 col4 action_id
0 1 2 2 0 1, a, apple
1 1 2 3 5 1, b, apple
2 0.2 0.3 8 1 1, c, apple
3 0.2 0.02 1 2 2, a, apple
4 11 11 22 11 2, b, apple
但尽管如此,我还是得到了同样的问题,因为只有我的最后一个值来了
{(1, 'c', 'apple'): array([[0.2, 0.3, 8, 1]]),
(2, 'a', 'apple'): array([[0.2, 0.02, 1, 2]]),
(2, 'b', 'apple'): array([[11, 11, 22, 11]])}
2条答案
按热度按时间qncylg1j1#
在python字典中不可能有重复的键。
如果需要,可以在列表/数组级别进行聚合:
输出:
或者:
输出:
ovfsdjhp2#