python - 绘制 Pandas 时间增量

标签 python matplotlib pandas

我有一个 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/

相关文章:

python - 使用另一个数据帧中的系数将方程应用于数据帧

python - 我可以在不成为系统管理员的情况下修复 "version GLIBC_2.14 not found"错误吗?

python - RandomizedSearchCV 中 fit_params 的含义

python - 如何使用 turtle 图形编程从两个列表中绘制点?

python - Numpy:将散点图变成二维数组

python - 从 csv 文件行中的日期切片

python - 修改 qscintilla python lexar

python - Matplotlib 子图缺少网格

python - 我可以在Python中按周绘制条形图吗?

python - 评估 SMOTE 和 RandomUnderSampling 不同策略