用Python从时间戳中提取小时

10

我有一个数据框 df_energy2。

df_energy2.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 29974 entries, 0 to 29973
Data columns (total 4 columns):
TIMESTAMP        29974 non-null datetime64[ns]
P_ACT_KW         29974 non-null int64
PERIODE_TARIF    29974 non-null object
P_SOUSCR         29974 non-null int64
dtypes: datetime64[ns](1), int64(2), object(1)
memory usage: 936.8+ KB

使用这种结构:

df_energy2.head()

TIMESTAMP P_ACT_KW PERIODE_TARIF P_SOUSCR
2016-01-01 00:00:00 116 HC 250 
2016-01-01 00:10:00 121 HC 250

有没有 Python 函数可以从 TIMESTAMP 中提取小时?

此致敬礼

2个回答

8
我认为你需要使用 dt.hour
print (df.TIMESTAMP.dt.hour)
0    0
1    0
Name: TIMESTAMP, dtype: int64

df['hours'] = df.TIMESTAMP.dt.hour
print (df)
            TIMESTAMP  P_ACT_KW PERIODE_TARIF  P_SOUSCR  hours
0 2016-01-01 00:00:00       116            HC       250      0
1 2016-01-01 00:10:00       121            HC       250      0

0

假设您有以下数据:

df_energy2.head()

TIMESTAMP P_ACT_KW PERIODE_TARIF P_SOUSCR
2016-01-01 00:00:00 116 HC 250 
2016-01-01 00:10:00 121 HC 250

您的时间戳是索引。如果要从时间戳中提取小时数,其中时间戳是数据框的索引:

  hours = df_energy2.index.hour

编辑:是的,jezrael你是对的。按他所说:pandas数据框具有此属性,即dt

<dataframe>.<ts_column>.dt.hour

在您的上下文中的示例 - 具有日期的列是 TIMESTAMP

df.TIMESTAMP.dt.hour

一个类似的问题 - Pandas,带有datetime64列的数据框,按小时查询

1
不,有“RangeIndex: 29974 entries, 0 to 29973”,因此您的解决方案是错误的。“Timestamp”是列。 - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接