我有几个表的数据集。有些字段重叠,但在某些表上,它们可能具有一对多关系,而在其他表上,它们可能具有一对一关系。我正在尝试创建一个新的数据框,在这个数据框中,我可以获取与一个字段(一对一)相关联的值,以及与同一个字段相关联的值,但在另一个表中(一对多),并将它们全部列在新的数据框中(一对多)
一个数据帧:
finishtId eventId instanceId ... value statusId finishType
0 1 18 1 ... 218.3 1 Positive
1 2 18 2 ... 217.586 1 Positive
2 3 18 3 ... 216.719 1 Positive
3 4 18 4 ... 215.464 1 Positive
4 5 18 5 ... 218.385 1 Negative
另一个数据帧:
eventId instanceId red blue time duration milliseconds
0 841 153 1 1 17:05:23 26.898 26898
1 841 30 1 1 17:05:52 25.021 25021
2 841 17 1 11 17:20:48 23.426 23426
3 841 4 1 12 17:22:34 23.251 23251
4 841 13 1 13 17:24:10 23.842 23842
5. 841. 153. 2 45. 17:45:30. 24.786. 26473
... ... ... ... ... ... ...
7633 1036 822 2 48 16:20:38 22.143 22143
7634 1036 1 2 50 16:23:05 21.853 21853
7635 1036 849 2 49 16:24:00 22.475 22475
7636 1036 154 2 62 16:42:16 24.010 24010
7637 1036 822 3 64 16:42:47 22.607 22607
我想创建一个新的dataframe,将dataframe2中的所有值(红色、蓝色、时间、持续时间、毫秒)附加到instanceId和eventId字段,以便dataframe1显示一对多关系。我还想创建一个新字段,告诉我每个instanceId和eventId(numRed)有多少个红色,基本上如下所示:
eventId instanceId red numRed blue ... time duration value statusId finishType
0 841 153 1 2 17 ... 17:05:23 26.898 218.3 1 Positive
1 841 153 2 2 52 ... 17:45:30 24.786 217.586 1 Positive
1 841 146 1 1 40 ... 17:32:30 24.986 217.586 1 Negative
因此,基本上每个eventId的每个instanceId都会列出每个红色、蓝色、时间、持续时间、值、状态ID和finishType。我是熊猫队的新手,所以我一直在挖掘函数,但我经常会遇到与数据类型(float vs str)等相关的错误
更新:从Edunne那里得到解决方案后,我意识到我认为对数据集更有效的其实是其他东西。我更喜欢合并每个“eventId”的每个“instanceId”的“红色”值行。不同的值将被平均化,“持续时间”的平均值和“值”字段的平均值。像这样的东西:
eventId instanceId numRed ... duration value statusId finishType
0 841 153 2 ... 25.842 218.3 1 Positive
1 841 146 1 ... 24.986 217.586 1 Negative
你应该让我们看看你试过什么!让人们更容易回答
熊猫Merge是我的方法。比如:
新的_df将包含df2中的所有行以及df2中的任何匹配行
如果“eventID”或“instanceId”的数据类型在两个数据帧中不同,您可能会遇到问题,但这应该很容易解决
编辑 可能在找group_by。在加入/合并另一个数据帧之前,应在第二个数据帧上执行聚合
让我知道进展如何
相关问题 更多 >
编程相关推荐