我有几个表的数据集。一些字段重叠,但在某些表上它们可能具有一对多关系,而在其他表上它们可能具有一对一关系。我正在尝试创建一个新的数据框,我可以在其中获取与一个字段(一对一)关联的值以及与同一字段关联但在另一个表中(一对多)的值,并将它们全部列在新数据框(一对多)。一个数据框: finishtId eventId instanceId ... value statusId finishType0 1 18 1 ... 218.3 1 Positive1 2 18 2 ... 217.586 1 Positive2 3 18 3 ... 216.719 1 Positive3 4 18 4 ... 215.464 1 Positive4 5 18 5 ... 218.385 1 Negative另一个数据框: eventId instanceId red blue time duration milliseconds0 841 153 1 1 17:05:23 26.898 268981 841 30 1 1 17:05:52 25.021 250212 841 17 1 11 17:20:48 23.426 234263 841 4 1 12 17:22:34 23.251 232514 841 13 1 13 17:24:10 23.842 238425. 841. 153. 2 45. 17:45:30. 24.786. 26473 ... ... ... ... ... ... ...7633 1036 822 2 48 16:20:38 22.143 221437634 1036 1 2 50 16:23:05 21.853 218537635 1036 849 2 49 16:24:00 22.475 224757636 1036 154 2 62 16:42:16 24.010 240107637 1036 822 3 64 16:42:47 22.607 22607我想创建一个新的数据框,将 dataframe2 中的所有值(红色、蓝色、时间、持续时间、毫秒)附加到 instanceId 和 eventId 字段,以便 dataframe1 显示一对多关系。我还想创建一个新字段,告诉我每个 instanceId 和 eventId (numRed) 有多少红色 基本上是这样的: eventId instanceId red numRed blue ... time duration value statusId finishType0 841 153 1 2 17 ... 17:05:23 26.898 218.3 1 Positive1 841 153 2 2 52 ... 17:45:30 24.786 217.586 1 Positive1 841 146 1 1 40 ... 17:32:30 24.986 217.586 1 Negative
1 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
你应该向我们展示你的尝试!让人们更容易回答。
Pandas Merge是我处理它的方式。就像是:
new_df = df2.merge(df1, on=["eventID", "instanceId"], how="outer")
new_df 将包含 df2 中的所有行以及 df2 中的任何匹配行。
如果“eventID”或“instanceId”的数据类型在两个数据帧中不同,您可能会遇到问题,但这应该很容易解决......
编辑 可能正在寻找group_by。在加入/合并另一个数据帧之前,您应该在第二个数据帧上执行聚合。
# Dictionary with keys as column names and values as the aggregation/summary method.
agg_dict = {
"duration": "mean",
"value": "mean"
}
group_by_columns = ["eventID", "instanceId"] # We'll get one row in output for each combination of these columns
new_df2 = df2.groupby(group_by_columns).agg(agg_dict).reset_index()
result = new_df2.merge(df1, on=["eventID", "instanceId"], how="outer")
让我知道事情的后续!
添加回答
举报
0/150
提交
取消