Pandas中按条件处理datetime64[ns]时间:保留两位秒数并给OUT记录加1秒
Pandas 数据处理解决方案
步骤1:补全带DT列的模拟DataFrame
先构造包含datetime64[ns]格式DT列的完整数据集,匹配你提供的样例结构:
import pandas as pd df = pd.DataFrame({ 'ID': [120, 120, 120, 120], 'DT': pd.to_datetime([ '2022-12-22 02:12:12.123', '2022-12-23 04:12:45.456', '2022-12-26 08:11:12.125', '2022-12-30 02:12:12.126' ]), 'InOut': ['IN', 'OUT', 'IN', 'OUT'] })
步骤2:将DT的秒部分改为两位格式
通过dt.floor('S')截断毫秒部分,把DT保留到秒级(秒部分显示为两位):
# 截断毫秒,仅保留年-月-日 时:分:秒格式 df['DT'] = df['DT'].dt.floor('S')
步骤3:对InOut为OUT的记录增加1秒
用布尔索引定位目标行,通过pd.Timedelta给DT字段添加1秒:
# 给InOut为OUT的记录的DT字段加1秒 df.loc[df['InOut'] == 'OUT', 'DT'] += pd.Timedelta(1, unit='seconds')
最终结果
执行后DataFrame的输出如下:
ID DT InOut 0 120 2022-12-22 02:12:12 IN 1 120 2022-12-23 04:12:46 OUT 2 120 2022-12-26 08:11:12 IN 3 120 2022-12-30 02:12:13 OUT
内容的提问来源于stack exchange,提问作者mar355
相关产品推荐
相关产品推荐

