我有一个 pandas 数据框,它有两个 datetime64 列和一个 timedelta64 列,它是两列之间的差异。我正在尝试绘制 timedelta 列的直方图,以可视化两个事件之间的时间差异。
但是,只使用 df['time_delta']
结果是:
TypeError: ufunc add cannot use operands with types dtype('<m8[ns]') and dtype('float64')
尝试将 timedelta 列转换为:float--> df2 = df1['time_delta'].astype(float)
结果是:
TypeError: cannot astype a timedelta from [timedelta64[ns]] to [float64]
如何创建 pandas timedelta 数据的直方图?
最佳答案
这里是转换timedeltas的方法,文档是here
In [2]: pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')
Out[2]:
0 0 days, 00:00:01
1 1 days, 00:00:01
2 2 days, 00:00:01
3 3 days, 00:00:01
4 4 days, 00:00:01
dtype: timedelta64[ns]
转换为秒(是精确的转换)
In [3]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')).astype('timedelta64[s]')
Out[3]:
0 1
1 86401
2 172801
3 259201
4 345601
dtype: float64
使用 astype 转换将舍入到该单位
In [4]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')).astype('timedelta64[D]')
Out[4]:
0 0
1 1
2 2
3 3
4 4
dtype: float64
部门会给出准确的repr
In [5]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')) / np.timedelta64(1,'D')
Out[5]:
0 0.000012
1 1.000012
2 2.000012
3 3.000012
4 4.000012
dtype: float64
关于python - 绘制 Pandas 时间增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23543909/