Pandas 将数据帧从DateTimeIndex复制到分钟或小时增量计数器
我想将数据帧的索引从DateTimeIndex(例如,2015-06-11 23:59:29)转换为增量小时计数器,如:[0h 1m,0h 2m,0h 3m,0h 4m]。是否可能?如果可以接受Pandas 将数据帧从DateTimeIndex复制到分钟或小时增量计数器,pandas,dataframe,Pandas,Dataframe,我想将数据帧的索引从DateTimeIndex(例如,2015-06-11 23:59:29)转换为增量小时计数器,如:[0h 1m,0h 2m,0h 3m,0h 4m]。是否可能?如果可以接受HH:MM:SS格式,则可以将DatetimeIndex更改为TimedeltaIndex: start = df.index.min() df.index = df.index-start 比如说, import numpy as np import pandas as pd np.random.s
HH:MM:SS
格式,则可以将DatetimeIndex更改为TimedeltaIndex:
start = df.index.min()
df.index = df.index-start
比如说,
import numpy as np
import pandas as pd
np.random.seed(2015)
N = 10
index = pd.date_range('2015-7-24', periods=N, freq='15T')
df = pd.DataFrame(np.random.randint(10, size=(N,4)), index=index)
start = df.index.min()
df.index = df.index-start
print(df)
屈服
0 1 2 3
00:00:00 2 2 9 6
00:15:00 8 5 7 8
00:30:00 0 6 7 8
00:45:00 3 8 6 9
01:00:00 2 3 1 2
01:15:00 6 2 9 8
01:30:00 5 8 4 8
01:45:00 9 1 2 2
02:00:00 1 2 3 3
02:15:00 3 9 3 1
要以
0h 0m
格式打印xtick标签
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
np.random.seed(2015)
N = 10
index = pd.date_range('2015-7-24', periods=N, freq='15T')
df = pd.DataFrame(np.random.randint(10, size=(N,4)).astype(float), index=index)
start = df.index.min()
df.index = df.index-start
df.index /= np.timedelta64(1, 'm')
fig, ax = plt.subplots()
df.plot(kind='line', ax=ax)
def xfmt(x, pos):
hours, minutes = divmod(x, 60)
return '{:g}h {:02g}m'.format(hours, minutes)
ax.xaxis.set_major_formatter(ticker.FuncFormatter(xfmt))
plt.show()
的解决方案只适用于从第一行开始索引
根据,为了将这些索引转换为分钟或其他任何操作:
df.index/np.timedelta64(1,'m')
格式是否重要,例如0h 1m
?或者HH:MM:SS
!问题:df.plot()打印“0天02:19:58”。。。如何避免打印“0天”部分?以及如何将分钟数打印为xticks?解决方案:df.index/np.timedelta64(1,'m')
在此处找到解决方案@EnricoRotundo:是的,这是一种查找总分钟数的好方法。