【问题标题】:error with strptime() to extract date from timestamp with pythonstrptime() 使用 python 从时间戳中提取日期时出错
【发布时间】:2016-12-07 13:20:49
【问题描述】:

我尝试从时间戳中提取小时: 我有一个名为 df_no_missing 的数据框:

df_no_missing.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 34673 entries, 1 to 43228
Data columns (total 8 columns):
TIMESTAMP        34673 non-null object
P_ACT_KW         34673 non-null float64
PERIODE_TARIF    34673 non-null object
P_SOUSCR         34673 non-null float64
SITE             34673 non-null object
TARIF            34673 non-null object
depassement      34673 non-null float64
date             34673 non-null int64
dtypes: float64(3), int64(1), object(4)
memory usage: 2.4+ MB

这是我的代码:

from datetime import datetime,timedelta
mytime = datetime.strptime(df_no_missing["TIMESTAMP"],"%d/%m/%Y %H:%M")
print (mytime.day)
print (mytime.hour)

我得到这个错误:

在 () 1 df_no_missing.info() 2 从日期时间导入日期时间,时间增量 ----> 3 mytime = datetime.strptime(df_no_missing["TIMESTAMP"],"%d/%m/%Y %H:%M") 4 打印 (mytime.day) 5 打印 (mytime.hour)

TypeError: strptime() 参数 1 必须是 str,而不是 Series

【问题讨论】:

  • df_no_missing["TIMESTAMP"] 返回整列,您不能在此上下文中使用它。你认为mytime 的值是多少?
  • 这似乎无效,列dtypeobject 表明它是字符串,你没有显示当前格式是什么但你可以尝试df_no_missing["TIMESTAMP"] = pd.to_datetime(df_no_missing["TIMESTAMP"]) 转换为datetime 之后你可以做df_no_missing["TIMESTAMP"].dt.daydf_no_missing["TIMESTAMP"].dt.hour

标签: python datetime pandas


【解决方案1】:

您可能希望在单个条目而不是数据框对象本身上使用datetime.strptime?尝试类似:

for data in df_no_missing["TIMESTAMP"]:
    mytime = datetime.strptime(data,"%d/%m/%Y %H:%M")
    print (mytime.day)
    print (mytime.hour)

【讨论】:

  • 感谢您的回复,然后要添加一个包含每个时间戳的日期的“day”列,我必须这样做:df_no_missing['jour'] = mytime.day ?
  • 我猜类似:df1['new_field'] = df1['some_field'].map(lambda x: datetime.strptime(x, "%d/%m/%Y %H:%M").day) 可以解决问题,但也请查看@EdChum 评论
猜你喜欢
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
相关资源
最近更新 更多