TypeError:传递PeriodType数据无效。使用`data.to_时间戳()`

2024-10-02 08:24:07 发布

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

如何将格式为2014-09date列转换为2014-09-01 00:00:00.000格式?以前的格式从df['date'] = pd.to_datetime(df['date']).dt.to_period("M")转换而来。在

我使用df['date'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d %H:%M:%S.000'),但它会生成一个错误:TypeError: Passing PeriodDtype data is invalid. Use data.to_timestamp() instead。我也尝试使用pd.to_datetime(df['date']).dt.strftime('%Y-%m'),它会产生相同的错误。在


Tags: todfdatadatetimedateis格式错误
3条回答

试着去掉最后3个数字

print(pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d %H:%M:%S.%f')[0][:-3])

输出:

^{pr2}$

使用%f毫秒

df['date'] =  pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S.%f')

示例代码是

^{pr2}$

它给出了以下输出

    Date
0   2014-09-01

要将句点中的2014-09转换为2014-09-01 00:00:00.000,可以执行以下操作

df = pd.DataFrame({
    'date': ['2014-09-05']
})
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df['date'] = pd.to_datetime(df['date']).dt.to_period("M")
df['date'] = df['date'].dt.strftime('%Y-%m-01 00:00:00.000')
df

第一个想法是通过^{}将句点转换为时间戳,然后使用^{}

print (df)
      date
0  2014-09

print (df.dtypes)
date    period[M]
dtype: object

df['date'] = df['date'].dt.to_timestamp('s').dt.strftime('%Y-%m-%d %H:%M:%S.000')
print (df)
                      date
0  2014-09-01 00:00:00.000

或者简单地为每个值添加相同的最后一个值:

^{pr2}$

或者:

df['date'] = df['date'].dt.strftime('%Y-%m').add('-01 00:00:00.000')
print (df)
                      date
0  2014-09-01 00:00:00.000

相关问题 更多 >

    热门问题