如何将 Pandas DataFrame 索引从日期时间转换为简单的时间索引

沃尔科西克

我正在尝试评估一些四轴飞行器的飞行数据,并获得了一些带有纪元时间戳的日志文件。

然后我将它们转换为日期时间值(pd.to_datetime([...], unit='ms'))并截断了一些数字。

我的问题是,我实际上不需要日期,这也使得绘制数据变得更加复杂(不需要的xtick距离、错误诱导matplotlib.dates locators等)。

现在我剩下以下索引:

2019-09-13 10:09:16.200,...
2019-09-13 10:09:16.300,...
2019-09-13 10:09:16.400,...
...
2019-09-13 10:12:18.300,...

我的进口:

%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
import glob
import os.path
from datetime import datetime
from mpl_toolkits.mplot3d import Axes3D

我的数据输入/初始化:

data  = pd.read_csv(s,',',index_col=0) # Commands
data2 = pd.read_csv(s2,',',index_col=0) # Observations

d1 = data[data['field.handle']==d].drop(['field.handle','Commanded alpha','Commanded beta','Commanded gamma'], axis=1)
d2 = data2[data2['field.handle']==d].drop(['field.handle','Observed alpha','Observed beta','Observed gamma'], axis=1)
merged_data = pd.concat([d1,d2], axis=1, sort=False)
merged_data.index = truncate_index(merged_data)
filled_merge = merged_data.groupby(merged_data.index).mean().fillna(method='ffill')
finished_merge = filled_merge.copy().dropna()
deviations = finished_merge.copy()

我的绘图代码(有时有效,有时无效 - 取决于数据、定位器和格式化程序)

myFmt = mdates.DateFormatter('%M')
ax = deviations.plot(figsize=(14,9), use_index=True, y=['Positional x deviation','Positional y deviation','Positional z deviation'], subplots=True, sharex=True, layout=(3,1))
for axis in ax:
       for axi in axis:
              axi.set(xlabel = "Time in minutes (minor ticks in seconds)", ylabel="Deviation in meters")
              axi.xaxis.set_major_formatter(myFmt)
              axi.xaxis.set_minor_locator(mdates.SecondLocator())
              axi.xaxis.set_major_locator(mdates.MinuteLocator())
plt.suptitle(plot_title, fontsize=14)
plt.subplots_adjust(top=0.92)

我认为,如果索引可以以毫秒为单位(或几分之一秒 - 例如,浮点值) - 从第一个日期时间值开始,例如:( 2019-09-13 10:09:16.200第一个条目)将成为0或者0.0,第二个条目将从2019-09-13 10:09:16.300变为0.1遗憾的是,我不能完全删除索引,而只是用行数进行计算,因为日期时间中有一些差距,例如,我想保留 300 毫秒。

我尝试了不同的方法来一致地绘制我的数据,但最终没有任何效果,我希望使用新索引的新方法可以解决我的问题......

我又看了看在可能的候选人pandasmatplotlibAPI(弗罗姆timedeltas到date2num等),以使我的设想指数改造,但没有evail。可能是因为我不确定这个“转换”的正确术语是什么。

任何帮助真的很感激!

二战

如果您的索引如下所示:

>>> d = ['2019-09-13 10:09:16.200',
'2019-09-13 10:09:16.300',
'2019-09-13 10:09:16.400',
'2019-09-13 10:12:18.300']
>>> s = pd.Series([pd.Timestamp(thing) for thing in d])
>>> s
0   2019-09-13 10:09:16.200
1   2019-09-13 10:09:16.300
2   2019-09-13 10:09:16.400
3   2019-09-13 10:12:18.300
dtype: datetime64[ns]
>>> 

您可以创建一个 timedelta 系列并获取相对于第一项的总秒数。并使用它。

>>> a = s - s[0]
>>> a
0          00:00:00
1   00:00:00.100000
2   00:00:00.200000
3   00:03:02.100000
dtype: timedelta64[ns]
>>> a.dt.total_seconds()
0      0.0
1      0.1
2      0.2
3    182.1
dtype: float64
>>> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将pandas DataFrame索引转换为时间戳格式

将 DataFrame 对象上的 Pandas 日期时间索引转换为具有“月”和“年”级别的 *MultiIndex*

无法将 DataFrame 索引转换为日期时间

python pandas将索引转换为日期时间

仅将年份用于日期时间索引-Pandas DataFrame

如何在Pandas DataFrame中将int转换为日期时间

使用日期时间索引将年份和月份的堆叠DataFrame转换为DataFrame

将格式为YYYYMM的数据框索引转换为日期时间索引,并输入“ pandas.core.indexes.base.Index”

如何将 Pandas DataFrame 的 rdd 转换为 Spark DataFrame

如何将熊猫中的索引转换为日期时间?

如何将列转换为日期时间索引

如何将Pandas DataFrame转换为Pandas ML ModelFrame?

使用特定的日期时间索引重新索引Pandas Dataframe

如何将列表元素与 Pandas DataFrame 中的索引匹配

如何将pandas DataFrame的值用作numpy数组索引

如何将 Pandas DataFrame 更改为列多索引?

如何使用字符串访问Pandas DataFrame日期时间索引

将熊猫索引转换为日期时间

将Pandas Dataframe日期索引和列转换为Numpy数组

Pandas DataFrame日期时间索引无法在JSON转换和重新转换后幸免

如何将django模型的pandas DataFrame转换为json?

如何将列表转换为Pandas DataFrame?

如何将嵌套字典转换为Pandas DataFrame?

如何将单列Pandas DataFrame转换为Series

如何将Pandas DataFrame转换为TimeSeries?

如何将嵌套JSON转换为Pandas Dataframe

如何将Pandas DataFrame转换为Python中的列

如何将多个元组列表转换为Pandas DataFrame

如何将嵌套字典列表转换为pandas DataFrame?