【问题标题】:How to modify minutes in a column of datetime object of pandas dataframe?如何修改熊猫数据框的日期时间对象列中的分钟数?
【发布时间】:2020-07-15 11:58:43
【问题描述】:

我想将 10 分钟间隔内的任何分钟转换为第 5 分钟。例如,10 到 19 之间的分钟转换为 15,20 到 29 之间的分钟转换为 25 等等。

以下是数据框中我的日期时间列的摘录。

2020-06-25 13:23:48
2020-06-25 13:36:18
2020-06-25 13:41:32
2020-06-25 13:59:27

我想要的输出是:

2020-06-25 13:25:00
2020-06-25 13:35:00
2020-06-25 13:45:00
2020-06-25 13:55:00

【问题讨论】:

标签: python python-3.x pandas python-datetime


【解决方案1】:

我是这样做的,但我确信还有其他聪明的方法可以做到这一点:

df = pd.DataFrame({'time' : [pd.datetime(*x) for x in [[2020,6,25,13,23,48],[2020,6,25,13,36,18],[2020,6,25,13,41,32],[2020,6,25,13,59,27]]]})
df.time = df.time.apply(lambda x: pd.datetime(x.year, x.month, x.day, x.hour, (x.minute//10)*10+5, 0))

结果如下:

print(df):
                 time
0 2020-06-25 13:25:00
1 2020-06-25 13:35:00
2 2020-06-25 13:45:00
3 2020-06-25 13:55:00

【讨论】:

    【解决方案2】:

    构建您的数据框:

    import pandas as pd
    from datetime import datetime
    
    df = pd.DataFrame(
        data={
            "dt": [
                "2020-06-25 13:23:48", "2020-06-25 13:36:18",
                "2020-06-25 13:41:32", "2020-06-25 13:59:27"
            ]
        }
    )
    

    df 看起来像这样:

                  datetime
    0  2020-06-25 13:23:48
    1  2020-06-25 13:36:18
    2  2020-06-25 13:41:32
    3  2020-06-25 13:59:27
    

    我们可以定义一个函数应用于dfdt列:

    def change_dt(x):
        f = "%Y-%m-%d %H:%M:%S"
        dt = datetime.strptime(x, f)
        
        if dt.minute < 10:
            m = 5
        elif dt.minute >= 10 and dt.minute < 20:
            m = 15
        elif dt.minute >= 20 and dt.minute < 30:
            m = 25
        elif dt.minute >= 30 and dt.minute < 40:
            m = 35
        elif dt.minute >= 40 and dt.minute < 50:
            m = 45
        else:
            m = 55
        
        return dt.replace(minute=m, second=0).strftime(f)
    

    我们将dfdt 列替换为将函数change_dt 应用于该列的结果:

    df.loc[:, "dt"] = df["dt"].apply(change_dt)
    

    df 看起来像这样:

                  datetime
    0  2020-06-25 13:25:00
    1  2020-06-25 13:35:00
    2  2020-06-25 13:45:00
    3  2020-06-25 13:55:00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2023-03-20
      • 2017-05-21
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多