使用 pandas 从 CSV 中设置没有日期的前一天晚上的开始时间

Setting start time from previous night without dates from CSV using pandas

t我想 运行 对从 22:00:00 到 09:00:00 第二天早上 整夜采集的重复测量数据(仅时间,无日期)进行时间序列分析

如何设置时间以使时间序列从 22:00:00 开始。目前即使在绘图时它也从 00:00:00 开始并在 23:00:00 结束,在 09:00:00 和 23:00:00 之间有一条平线?

df = pd.read_csv('1310.csv', parse_dates=True)
df['Time'] =  pd.to_datetime(df['Time'])
df['Time'].apply( lambda d : d.time() )
df = df.set_index('Time')
df['2017-05-16 22:00:00'] + pd.Timedelta('-1 day')

注意:最后一行代码中的date是自动添加的,在执行df['Time']时看到的,所以我在最后插入了与date相同的格式22:00:00.

这是错误:

TypeError: Could not operate Timedelta('-1 days +00:00:00') with block values unsupported operand type(s) for +: 'numpy.ndarray' and 'Timedelta'

您应该将时间戳视为 pd.Timedeltas,并在开始时间之前为示例添加一天。

创建一些示例数据:

import pandas as pd
d = pd.date_range(start='22:00:00', periods=12, freq='h')
s = pd.Series(d).dt.time
df = pd.DataFrame(pd.np.random.randn(len(s)), index=s, columns=['value'])
df.to_csv('data.csv')

df
            value
22:00:00    -0.214977
23:00:00    -0.006585
00:00:00    0.568259
01:00:00    0.603196
02:00:00    0.358124
03:00:00    0.027835
04:00:00    -0.436322
05:00:00    0.627624
06:00:00    0.168189
07:00:00    -0.321916
08:00:00    0.737383
09:00:00    1.100500

读入,将index做成timedelta,在timedeltas中加上开始时间前的一天,再赋值回index。

df2 = pd.read_csv('data.csv', index_col=0)
df2.index = pd.to_timedelta(df2.index)
s = pd.Series(df2.index)
s[s < pd.Timedelta('22:00:00')] += pd.Timedelta('1d')
df2.index = pd.to_datetime(s)

df2
                    value
1970-01-01 22:00:00 -0.214977
1970-01-01 23:00:00 -0.006585
1970-01-02 00:00:00 0.568259
1970-01-02 01:00:00 0.603196
1970-01-02 02:00:00 0.358124
1970-01-02 03:00:00 0.027835
1970-01-02 04:00:00 -0.436322
1970-01-02 05:00:00 0.627624
1970-01-02 06:00:00 0.168189
1970-01-02 07:00:00 -0.321916
1970-01-02 08:00:00 0.737383
1970-01-02 09:00:00 1.100500

如果要设置第一天的日期:

df2.index += (pd.Timestamp('2015-06-06') - pd.Timestamp(0))

df2
                    value
2015-06-06 22:00:00 -0.214977
2015-06-06 23:00:00 -0.006585
2015-06-07 00:00:00 0.568259
2015-06-07 01:00:00 0.603196
2015-06-07 02:00:00 0.358124
2015-06-07 03:00:00 0.027835
2015-06-07 04:00:00 -0.436322
2015-06-07 05:00:00 0.627624
2015-06-07 06:00:00 0.168189
2015-06-07 07:00:00 -0.321916
2015-06-07 08:00:00 0.737383
2015-06-07 09:00:00 1.100500