gpt4 book ai didi

python-3.x - 如何连接列时间值在一定范围内且不是日期时间或时间戳对象的两个数据帧?

转载 作者:行者123 更新时间:2023-12-04 02:21:27 24 4
gpt4 key购买 nike

我有两个数据框,如下所示:

     time browncarbon blackcarbon
181.7335 0.105270 NaN
181.3809 0.166545 0.001217
181.6197 0.071581 NaN

422 rows x 3 columns

start end toc
179.9989 180.0002 155.0
180.0002 180.0016 152.0
180.0016 180.0030 151.0

1364 rows x 3 columns

第一个数据帧有一个时间列,每四分钟有一个瞬间。第二个数据帧有两个时间列,每两分钟间隔一次。这两个时间列不会同时开始和结束。但是,它们包含同一天收集的数据。我怎样才能制作另一个数据框包含:

time browncarbon blackcarbon toc

422 rows X 4 columns

Stack Overflow 上有一个相关的答案,但是,它仅适用于时间列是 datetime 或 timestamp 对象的情况。链接是:How to join two dataframes for which column values are within a certain range?

补充1:封装到其中一个时间行中的多个开始和结束行也应该对应一个目录行,就像现在一样,但是,它应该是多个目录行的平均值,即目前情况并非如此。

附录 2:Merging two pandas dataframes with complex conditions

最佳答案

我们创建一个人工键列来执行外部合并,以取回笛卡尔积(行之间的所有匹配项)。然后我们用 .query 过滤所有时间在范围内的行。

注意:我编辑了一行的值以便我们可以得到一个匹配项(请参阅底部示例数据框中的第 0 行)

df1.assign(key=1).merge(df2.assign(key=1), on='key', how='outer')\
.query('(time >= start) & (time <= end)')\
.drop(['key', 'start', 'end'], axis=1)

输出

       time  browncarbon  blackcarbon    toc
1 180.0008 0.10527 NaN 152.0

使用的示例数据框:

df1:

       time  browncarbon  blackcarbon
0 180.0008 0.105270 NaN
1 181.3809 0.166545 0.001217
2 181.6197 0.071581 NaN

df2:

      start       end    toc
0 179.9989 180.0002 155.0
1 180.0002 180.0016 152.0
2 180.0016 180.0030 151.0

关于python-3.x - 如何连接列时间值在一定范围内且不是日期时间或时间戳对象的两个数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57065538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com