Pul*_*Jha 1 python datetime-format python-datetime pandas
我的数据框中有一列 'datedif' 为:
exposuredate min_exposure_date datedif
2014-10-08 2014-09-27 11 days
2014-10-09 2014-09-27 12 days
2014-09-27 2014-09-27 0 days
2014-09-27 2014-09-27 0 days
2014-10-22 2014-09-27 25 days
data.exposuredate = pd.to_datetime(data.exposuredate)
data.min_exposure_date = pd.to_datetime(data.min_exposure_date)
data['datedif'] = ((data.exposuredate)-(data.min_exposure_date))
Run Code Online (Sandbox Code Playgroud)
列的格式为 datetime64[ns]。我想提取“datedif”字段中的天数。我找不到任何可以帮助我提取天数差异的东西。
我试过:
data['datedif_day'] = data['datedif'].dt.days
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError: 'Series' 对象没有属性 'dt'
Pandas Docs 与您正在寻找的转换类型相关,作为频率转换
这两个选项是 1) 除以 Timedelta 或 2) 类型转换。如文档中所述,两者之间存在细微差别:
“请注意,由 numpy 标量除法是真正的除法,而 astyping 相当于楼层除法。”
data = pd.DataFrame([("2014-10-08", "2014-09-27"),
("2014-10-09", "2014-09-27"),
("2014-09-27", "2014-09-27"),
("2014-10-22", "2014-09-27")],
columns=["exposuredate", "min_exposure_date"])
data['datediff'] = pd.to_datetime(data.exposuredate)
- pd.to_datetime(data.min_exposure_date)
data['datediff'] / pd.Timedelta(1, unit='d')
data['datediff'].astype('timedelta64[D]')
Run Code Online (Sandbox Code Playgroud)
两种操作都会产生:
0 11.0
1 12.0
2 0.0
3 25.0
Name: datediff, dtype: float64
Run Code Online (Sandbox Code Playgroud)
如果您使用日期差异作为训练机器学习算法的特征,那么它们以哪种形式表示并不重要,因为无论如何它们都应该被归一化。timedelta64[ns]完全可以。当谈到可视化目的时,请参阅这篇文章。
| 归档时间: |
|
| 查看次数: |
8171 次 |
| 最近记录: |