python - Python/Pandas:如何组合两个 DataFrame,其中一个框架应该是另一个框架单元格内的 DataFrame?
问题描述
我有两个熊猫数据框。两个 DataFrame 都是时间序列,具有以下结构的一个公共列(我们称之为 batchNumber):
[time = index, batchNumber, valueColumn, other fields]
第一个 DataFrame 每个 batchNumber 包含一行,第二个 DataFrame 每个 batchNumber 包含许多行,每行都有一个单独的时间步长。
我想将这两个框架组合成一个具有结构的框架(故意避免“加入”,因为我不确定这是否是正确的技术):
[time1, batchNumber1 = batchNumber2, value1, [(time2[0], value2[0]), (time[1], value[1]), (time[2], value[2]), ..., (time[N], value[N])], other fields1]
因此,一种“数据帧中的数据帧”。那可能吗?怎么能做到这一点?
df1 中的数据如下所示,列 [value, batchNumber, timestamp, otherID]:
[[3.06130831419325e-05 1552608005236178640 '2019-03-15T00:00:05.236178688Z' 1552608005236178640]
[3.1214206203101214e-05 1552608010657198640 '2019-03-15T00:00:10.657198592Z' 1552608010657198640]
[2.9220824990100192e-05 1552608016078218640 '2019-03-15T00:00:16.078218752Z' 1552608016078218640]
[3.1036932744355974e-05 1552608021499238640 '2019-03-15T00:00:21.499238656Z' 1552608021499238640]
[2.9085449547509336e-05 1552608026920258640 '2019-03-15T00:00:26.92025856Z' 1552608026920258640]
...
df2 中的数据如下所示,列 [value, batchNumber, timestamp, otherID]:
[[512.5499877929688 1552608005236178640 '2019-03-15T00:00:05.236178688Z' 1552608005236178640]
[512.7000122070312 1552608005236178640 '2019-03-15T00:00:05.236180736Z' 1552608005236178640]
[513.0999755859375 1552608005236178640 '2019-03-15T00:00:05.236182528Z' 1552608005236178640]
[513.0 1552608005236178640 '2019-03-15T00:00:05.236184576Z' 1552608005236178640]
[513.5 1552608005236178640 '2019-03-15T00:00:05.236186624Z' 1552608005236178640]
[512.8499755859375 1552608005236178640 '2019-03-15T00:00:05.236188672Z' 1552608005236178640]
[513.3499755859375 1552608005236178640 '2019-03-15T00:00:05.23619072Z' 1552608005236178640]
[512.9500122070312 1552608005236178640 '2019-03-15T00:00:05.236192768Z' 1552608005236178640]
[513.2000122070312 1552608005236178640 '2019-03-15T00:00:05.23619456Z' 1552608005236178640]
[513.2000122070312 1552608005236178640 '2019-03-15T00:00:05.236196608Z' 1552608005236178640]
[512.8499755859375 1552608005236178640 '2019-03-15T00:00:05.23619...
可以看到,df1 中有 onbatchNumber 值,而 df2 中有多次相同的 batchNumber,在 df1 和 df2 的行之间创建了 1:n 的关系。
我想让 df2 的所有行匹配 df1 的 batchID 作为添加到 df1 的新单元格中的子表/列表/DataFrame,象征性地说:
df_new.row = df1.row + df2.subset(batchNumber(df2) == batchNumber(df1))
解决方案
推荐阅读
- java - 如何在折线图中留出空白?
- java - Java 应用程序中 io.vertx.core.impl.EventLoopContext 中的内存泄漏
- node.js - firebase nodeJs 收到电子邮件解析问题
- java - 当我尝试将 angularJs 应用程序连接到 Spring Boot 时出现 401
- libraries - Coq 中同一个库的不同版本
- azure - 如何在 Azure 中删除没有附加服务的服务计划
- python-3.x - 如果条件 + 检查 isnull() 为真
- three.js - 对three.js的深度感到困惑
- mongodb - 如何从 Go 中仅查询 MongoDB 不区分大小写
- shell - 用于检查文件的 Shell 脚本返回语法错误