【发布时间】:2021-07-15 22:00:05
【问题描述】:
我没有找到在 Pandas 中组织以下数据框以显示我需要的所有信息的方法。 我有以下数据框:
Fecha ID Nombre Doc Doc2 Prod Cantidad
0 2021-03-06 00:00:00 1 Lolo 123 1 1564 1
1 2021-03-06 00:00:00 1 Lolo 123 1 15665 1
2 2021-03-06 00:00:00 1 Lolo 123 1 1674 1
3 2021-03-06 00:00:00 2 Momo 125 1 1568 1
4 2021-03-06 00:00:00 2 Momo 125 1 1568 1
5 2021-03-06 00:00:00 3 PePe 136 2 1568 1
6 2021-03-06 00:00:00 3 PePe 136 2 1678 1
7 2021-03-06 00:00:00 4 Lolo 123 1 1674 1
8 2021-03-06 00:00:00 5 Coco 125 2 1568 1
9 2021-03-07 00:00:00 6 Lolo 123 1 15665 1
现在,我需要添加 Cantidad of` `` Prodfor the same date for each person, in example Lolo, she has rows 0, 1, 2 and 4 on the same day. The way I found to do it was withgroupbyafter concatenating theDate + Doc+Doc2``` (所有字符串),这是我发现的唯一方法能够按不同的日期对同一个人进行分组和分隔。代码如下:
df['Concat'] = df['Doc'] + df['Doc2'] + df['Fecha'].str[:-9].str.replace('-','')
gb = df.groupby(['Concat', 'Fecha', 'Nombre', 'Doc', 'Doc2', 'Prod'],
as_index=False)[['Cantidad']].sum()
我得到了这个结果:
Concat Fecha Nombre Doc Doc2 Prod Cantidad
0 123120210306 2021-03-06 00:00:00 Lolo 123 1 1564 1
1 123120210306 2021-03-06 00:00:00 Lolo 123 1 1674 2
2 123120210306 2021-03-06 00:00:00 Lolo 123 1 15665 1
3 123120210307 2021-03-07 00:00:00 Lolo 123 1 15665 1
4 125120210306 2021-03-06 00:00:00 Momo 125 1 1568 2
5 125220210306 2021-03-06 00:00:00 Coco 125 2 1568 1
6 136220210306 2021-03-06 00:00:00 PePe 136 2 1568 1
7 136220210306 2021-03-06 00:00:00 PePe 136 2 1678 1
分组是正确的,问题是当我想把```ID```放在数据框中并选择日期的最小ID,在这种情况下对于“Lolo”是1(它有1和示例中的 4 天)。
每次我将ID 放入 groupby 时,它都会停止按数量对我进行分组。
有人可以指导我如何获得解决方案吗?结果应该是这样的:
Concat Fecha ID Nombre Doc Doc2 Prod Cantidad
0 123120210306 2021-03-06 00:00:00 1 Lolo 123 1 1564 1
1 123120210306 2021-03-06 00:00:00 1 Lolo 123 1 1674 2
2 123120210306 2021-03-06 00:00:00 1 Lolo 123 1 15665 1
3 123120210307 2021-03-07 00:00:00 6 Lolo 123 1 15665 1
4 125120210306 2021-03-06 00:00:00 2 Momo 125 1 1568 2
5 125220210306 2021-03-06 00:00:00 5 Coco 125 2 1568 1
6 136220210306 2021-03-06 00:00:00 3 PePe 136 2 1568 1
7 136220210306 2021-03-06 00:00:00 3 PePe 136 2 1678 1
谢谢。
【问题讨论】: