我有一个基本的代码片段,我需要在pandas中重新创建:
import datetime as dt
date1 = dt.date(2016,10,10)
date2 = dt.date.today()
print('Week#', round((date2 - date1).days / 7 +.5))
# output: Week# 36
我有一个datetime64[ns]
数据类型列,我无法破解它。使用这个基本的例子我很难过:
import pandas as pd
import numpy as np
import datetime as dt
dfp = pd.DataFrame({'A' : [dt.date(2016,10,6)]})
dfp['A'] = pd.to_datetime(dfp['A'])
def week(col):
print((col.dt.date - dt.date(2015, 10, 6)))
week(dfp['A']) #output: 366 days
当我尝试重新创建周数时,我遇到了多个错误:print((col.dt.date - dt.date(2015, 10, 6)).days)
返回AttributeError: 'Series' object has no attribute 'days'
我想尝试自己解决这个问题,这样我就可以从疼痛中学习。
如何使用第一个代码段中的第一个计算,以“天数”或int
的形式返回pandas列值? (即代替366 days
,而不是366
)
如果您喜欢冒险,我怎么能以更有效的方式获得Week# xxx
输出?
答案 0 :(得分:1)
我想你忘了.dt
:
dfp = pd.DataFrame({'A' : [date2]})
dfp['A'] = pd.to_datetime(dfp['A'])
print (dfp)
print (((dfp['A'].dt.date - dt.date(2016, 10, 10)).dt.days / 7 + .5).round().astype(int))
0 36
Name: A, dtype: int32