我需要一个以秒为单位的日期时间列,到处都是 ( including the docs ) 说我应该使用 Series.dt.total_seconds()
但它找不到函数。我假设我有一些错误的版本,但我没有...
pip freeze | grep pandas
pandas==0.20.3
python --version
Python 3.5.3
这一切都在一个 virtualenv 中,它已经运行了很长时间而没有错误,其他 Series.dt
函数也可以运行。这是代码:
from pandas import Series
from datetime import datetime
s = Series([datetime.now() for _ in range(10)])
0 2017-08-25 15:55:25.079495
1 2017-08-25 15:55:25.079504
2 2017-08-25 15:55:25.079506
3 2017-08-25 15:55:25.079508
4 2017-08-25 15:55:25.079509
5 2017-08-25 15:55:25.079510
6 2017-08-25 15:55:25.079512
7 2017-08-25 15:55:25.079513
8 2017-08-25 15:55:25.079514
9 2017-08-25 15:55:25.079516
dtype: datetime64[ns]
s.dt
<pandas.core.indexes.accessors.DatetimeProperties object at 0x7f5a686507b8>
s.dt.minute
0 55
1 55
2 55
3 55
4 55
5 55
6 55
7 55
8 55
9 55
dtype: int64
s.dt.total_seconds()
AttributeError: 'DatetimeProperties' object has no attribute 'total_seconds'
我还在另一台机器上测试过这个,得到了相同的结果。有什么想法我想念的吗?
最佳答案
total_seconds
是 timedelta
的成员不是日期时间
因此错误
你可能想要 dt.second
这将返回不同于 total_seconds
的第二个组件
所以你需要执行某种算术运算,比如删除一些东西来生成一系列时间增量,然后你可以做 dt.total_seconds
例子:
In[278]:
s = s - pd.datetime.now()
s
Out[278]:
0 -1 days +23:59:46.389639
1 -1 days +23:59:46.389639
2 -1 days +23:59:46.389639
3 -1 days +23:59:46.389639
4 -1 days +23:59:46.389639
5 -1 days +23:59:46.389639
6 -1 days +23:59:46.389639
7 -1 days +23:59:46.389639
8 -1 days +23:59:46.389639
9 -1 days +23:59:46.389639
dtype: timedelta64[ns]
In[279]:
s.dt.total_seconds()
Out[279]:
0 -13.610361
1 -13.610361
2 -13.610361
3 -13.610361
4 -13.610361
5 -13.610361
6 -13.610361
7 -13.610361
8 -13.610361
9 -13.610361
dtype: float64
关于python - 找不到 Pandas Series.dt.total_seconds(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884288/