将datetime列更改为不带循环的整数

2024-03-28 01:00:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据集:

user_id      datetime
   1        13 days 21:50:00
   2        0 days 02:05:00
   5        10 days 00:10:00
   7        2 days 01:20:00
   1        3 days 11:50:00
   2        1 days 02:30:00

我想要一个包含mintues的列,因此在本例中,结果可以是:

 user_id      datetime             minutes         
   1        13 days 21:50:00        20030
   2        0 days 02:05:00          125
   5        10 days 00:10:00        14402
   7        2 days 01:20:00          2960
   1        3 days 11:50:00          5030
   2        1 days 02:30:00          1590

有没有办法不用循环?你知道吗


Tags: 数据iddatetimedays办法userminutes本例
2条回答

以下是^{}的一种方法:

df['minutes'] = pd.to_timedelta(df.datetime) / pd.Timedelta(1, 'm')

>>> df
   user_id          datetime  minutes
0        1  13 days 21:50:00  20030.0
1        2   0 days 02:05:00    125.0
2        5  10 days 00:10:00  14410.0
3        7   2 days 01:20:00   2960.0
4        1   3 days 11:50:00   5030.0
5        2   1 days 02:30:00   1590.0

如果您的datetime列已经是数据类型timedelta,您可以省略显式强制转换,只使用:

df['minutes'] = df.datetime / pd.Timedelta(1, 'm')

是的,日期/时间序列有一个特殊的^{} accessor

df['minutes'] = df['datetime'].dt.total_seconds() / 60

如果只需要整分钟,请使用.astype(int)强制转换结果。你知道吗

相关问题 更多 >