使用时间戳合并时删除多余的行

特里斯坦·特兰

这是这个 thead的后续问题

那里的解决方案有效。但是,使用 frequency 1s,该grouping操作会在其间创建额外的空行:

df = pd.DataFrame([{'timestamp': '2021-05-28 14:00:00.274', 'value1': 123, 'value2': 21},
                   {'timestamp': '2021-05-28 14:00:00.374', 'value1': 101, 'value2': 33},
                   {'timestamp': '2021-05-28 14:00:01.294', 'value1':   7, 'value2': 12},
                   {'timestamp': '2021-05-28 14:00:02.002', 'value1':  42, 'value2': 10},
                   {'timestamp': '2021-05-28 14:00:02.039', 'value1':   1, 'value2': 34},
                   {'timestamp': '2021-06-28 14:00:03.00', 'value1':   2, 'value2': 41}])

对于上述的数据帧中,最后两个时间戳之间产生冗余行的数量庞大2021-05-28 00:02.002021-06-28 00:03.00在频率1s

如何限制只对源数据框中的任何内容进行分组而不引入冗余行?

耶斯列

使用Series.dt.floorDataFrame.pop用于删除timestamp从原来的:

#DatetimeIndex
df1 = df.groupby(df.pop('timestamp').dt.floor('1s')).max()

#column timestamp
#df1 = df.groupby(df.pop('timestamp').dt.floor('1s')).max().reset_index()

更简单的是:

#https://stackoverflow.com/a/68062217/2901002
out=df.assign(timestamp=df['timestamp'].dt.floor('1s')).groupby('timestamp',as_index=False).max()

DataFrame.dropna如果原始数据中不存在缺失值,则可以使用另一种解决方案

df=df.groupby(pd.Grouper(key='timestamp',freq='1s')).max().dropna().reset_index()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章