AttributeError:'TimedeltaProperties'对象没有属性'minute'

问题描述 投票:0回答:2

我有一个看起来像这样的数据框

df

[output]:
date        time
2020-02-28  00:30:45
2020-02-28  00:30:45
2020-03-09  00:21:06
2020-03-09  00:21:06
2020-03-09  00:21:06

with

df.time.dtype

[output]: dtype('<m8[ns]')

我想用以下命令提取时间变量中的分钟数

df.time.dt.minute

但是,我有这个错误

AttributeError: 'TimedeltaProperties' object has no attribute 'minute'

有人知道如何解决此问题吗?

python attributeerror python-datetime timedelta
2个回答
1
投票

您的列“时间”的类型为timedelta,因为错误告诉您;您可以使用total_seconds()方法转换为秒并除以60以获取分钟。

如果要完整的datetime对象列,请组合'date'和'time'。然后您可以使用.dt.minute

Ex:

import pandas as pd
df = pd.DataFrame({'time': pd.to_timedelta(['00:30:45','00:30:45','00:21:06','00:21:06','00:21:06']),
                   'date': pd.to_datetime(['2020-02-28','2020-02-28','2020-03-09','2020-03-09','2020-03-09'])})

# to get the "total minutes":
df['minutes'] = df['time'].dt.total_seconds()/60
df['minutes']
# 0    30.75
# 1    30.75
# 2    21.10
# 3    21.10
# 4    21.10
# Name: minutes, dtype: float64

[pd.Timedelta docs]

# to get a combined datetime object:
df['DateTime'] = df['date'] + df['time']

# now you can do:
df['DateTime'].dt.minute
# 0    30
# 1    30
# 2    21
# 3    21
# 4    21
# Name: DateTime, dtype: int64

2
投票

如果您尚未转换为日期时间数据框,请先执行然后创建一个像这样的新列

df['minute'] = df['date'].dt.minute

或此处的此方法

  df[new]= df[column].map(lambda x: datetime.datetime(x.minutes))
© www.soinside.com 2019 - 2024. All rights reserved.