我是一名自学的程序员(大约一年了,所以很新)。这是我的数据
phData = pd.read_excel('phone call log & duration.xlsx')
called from called to Date Time Duration in (sec)
0 7722078014 7722012013 2017-07-01 10:00:00 303
1 7722078014 7722052018 2017-07-01 10:21:00 502
2 7722078014 7450120521 2017-07-01 10:23:00 56
The dtypes are:
called from int64
called to int64
Date datetime64[ns]
Time object
Duration in (sec) int64
dtype: object
phData['Time'] = pd.to_datetime(phData['Time'], format='%H:%M:%S')
phData.head(2)
called from called to Date Time Duration in (sec)
0 7722078014 7722012013 2017-07-01 1900-01-01 10:00:00 303
1 7722078014 7722052018 2017-07-01 1900-01-01 10:21:00 502
我已经设法将“时间”更改为 datetime64[ns] 但不知何故添加了日期?我不知道从哪里来?我希望能够分析Date
and Time
使用 Pandas 我很乐意这样做。探索日期和时间、频率等之间的调用。我想我也可以保存它,这样它就可以在 Orange3 中工作。但 Orange3 不会将 Time 识别为时间格式。我试过剥离1900-01-01
但得到一个错误,说它只能在一个对象的情况下完成。我认为时间不是datetime
but a datetime.time
???我不确定为什么这很重要以及如何简单地拥有 2columns
one Date
和另一个Time
,Pandas 会帮我识别并进行挖掘。我看过无数的帖子,这就是我找到如何使用的地方pd.to_datetime
我的问题可能是datetime.time
但我被困在这之后。
Pandas 没有像 Time 这样的数据类型。你可以有datetime
or timedelta
dtype.
Option 1:将日期和时间合并到单列中:
In [23]: df['TimeStamp'] = pd.to_datetime(df.pop('Date') + ' ' + df.pop('Time'))
In [24]: df
Out[24]:
called from called to Duration in (sec) TimeStamp
0 7722078014 7722012013 303 2017-07-01 10:00:00
1 7722078014 7722052018 502 2017-07-01 10:21:00
2 7722078014 7450120521 56 2017-07-01 10:23:00
Option 2: 转变Date
to datetime
and Time
to timedelta
dtype:
In [27]: df.Date = pd.to_datetime(df.Date)
In [28]: df.Time = pd.to_timedelta(df.Time)
In [29]: df
Out[29]:
called from called to Date Time Duration in (sec)
0 7722078014 7722012013 2017-07-01 10:00:00 303
1 7722078014 7722052018 2017-07-01 10:21:00 502
2 7722078014 7450120521 2017-07-01 10:23:00 56
In [30]: df.dtypes
Out[30]:
called from int64
called to int64
Date datetime64[ns]
Time timedelta64[ns]
Duration in (sec) int64
dtype: object
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)