在DatetimeIndex上使用pandas时间戳对DataFrame进行切片

阿尔伯特

我正在从磁盘将csv文件读取到pandas DataFrame中,并希望根据索引时间戳对数据帧进行切片/过滤。

到目前为止,这是我得到的:

INDEX_COL_NAME = 'Zeit'
DELIM_SIGN = ';'
DECIMAL_SIGN = ','
KEEP_COLUMNS = [-2]
ENCODING = 'ISO-8859-1'

DATE = (2016, 8, 11)
START = (10, 52, 0)
END = (10, 53, 0)

df = pd.read_csv('data.csv',
    delimiter=DELIM_SIGN,
    decimal=DECIMAL_SIGN,
    index_col=False,
    parse_dates=[INDEX_COL_NAME],
    infer_datetime_format=True,
    encoding=ENCODING)

df.set_index(INDEX_COL_NAME, inplace=True)
df = df[KEEP_COLUMNS]

date = pd.datetime(*DATE)
start = date.replace(hour=START[0], minute=START[1], second=START[2])
end = date.replace(hour=END[0], minute=END[1], second=END[2])

数据如下(缩短的代码段):

Zeit;FU_P1;FU_P2;DIR_01;FIR_01;WAAGE_B1.I;WAAGE_B1.T;WAAGE_B1.X;WAAGE_B2.I;WAAGE_B2.T;WAAGE_B2.X;WAAGE_B3.I;WAAGE_B3.T;WAAGE_B3.X;WAAGE_B4.I;WAAGE_B4.T;WAAGE_B4.X;LEITFÄHIGKEIT_1.COND;LEITFÄHIGKEIT_2.COND
11.08.2016 10:51:59; 20,0; 0,00; 991,19;29,21;  0,0;Empty;   239;  1,0;Empty;-11,600;  0,0;Empty;-0,023;  0,0;Empty;-1,776;  0,3;Empty;
11.08.2016 10:52:00; 20,0; 0,00; 991,22;29,11;  0,0;Empty;   239;  1,0;Empty;-11,600;  0,0;Empty;-0,023;  0,0;Empty;-1,787;  0,3;Empty;
11.08.2016 10:52:10; 20,0; 0,00; 991,08;29,24;  0,0;Empty;   239;  1,0;Empty;-11,600;  0,0;Empty;-0,023;  1,0;Empty;-1,840;  0,3;Empty;
11.08.2016 10:52:20; 20,0; 0,00; 990,95;28,95;  0,0;Empty;   239;  1,0;Empty;-11,600;  0,0;Empty;-0,023;  0,0;Empty;-1,947;  0,3;Empty;
11.08.2016 10:52:30; 20,0; 0,00; 990,94;28,96;  0,0;Empty;   238;  1,0;Empty;-11,600;  0,0;Empty;-0,022;  0,0;Empty;-2,059;  0,3;Empty;
11.08.2016 10:52:40; 20,0; 0,00; 990,82;28,91;  0,0;Empty;   238;  1,0;Empty;-11,600;  0,0;Empty;-0,021;  0,0;Empty;-2,155;  0,3;Empty;
11.08.2016 10:52:50; 20,0; 0,00; 990,80;29,37;  0,0;Empty;   238;  1,0;Empty;-11,600;  0,0;Empty;-0,020;  0,0;Empty;-2,249;  0,0;Empty;
11.08.2016 10:53:00; 20,0; 0,00; 990,71;29,15;  0,0;Empty;   239;  1,0;Empty;-11,600;  0,0;Empty;-0,021;  1,0;Empty;-2,309;  0,5;Empty;
11.08.2016 10:53:01; 20,0; 0,00; 990,78;29,04;  0,0;Empty;   239;  1,0;Empty;-11,600;  0,0;Empty;-0,021;  0,2;Empty;-2,350;  0,5;Empty;

但是,由于以下原因,我无法获得所需的切片

print(df.ix[start:end]

打印一个空的DataFrame。

元素是索引的一部分,如

print(df.index)

表演

DatetimeIndex(['2016-11-08 10:45:27', '2016-11-08 10:45:28',
           '2016-11-08 10:45:29', '2016-11-08 10:45:30',
           '2016-11-08 10:45:31', '2016-11-08 10:45:32',
           '2016-11-08 10:45:33', '2016-11-08 10:45:34',
           '2016-11-08 10:45:35', '2016-11-08 10:45:36',
           ...
           '2016-11-08 15:59:51', '2016-11-08 15:59:52',
           '2016-11-08 15:59:53', '2016-11-08 15:59:54',
           '2016-11-08 15:59:55', '2016-11-08 15:59:56',
           '2016-11-08 15:59:57', '2016-11-08 15:59:58',
           '2016-11-08 15:59:59', '2016-11-08 16:00:00'],
          dtype='datetime64[ns]', name='Zeit', length=10408, freq=None)

每秒钟都有行,形成从数据记录开始到结束的总时间。

此外

print(start in df.index)

False

我也不明白。

如何执行所需的切片/过滤?我想念什么?

tr

索引似乎很好(您也可以使用pd.Timestamp字符串或仅使用字符串进行切片,而不使用日期时间对象)。

问题与日月顺序有关。IIUC,字符串11.08.2016将转换为11月8日,而不是8月11日。将参数添加dayfirst=Truepd.read_csv应该可以解决它。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Pandas DataFrame:SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值

使用指向切片的指针进行切片

按列值在DataFrame切片上查找计算函数的最快方法(Python pandas)

Pandas SettingWithCopyWarning:正在尝试从DataFrame的切片副本上设置一个值

索引与MultiIndex的Pandas Dataframe日期时间切片

使用pandas dataframe对复杂切片进行矢量化处理

根据行数切片Pandas Dataframe

如何使用Python Pandas在特定切片中制作DataFrame和“ fillna”切片?

根据时间间隔对带有DatetimeIndex的Pandas数据框进行切片

使用基于索引的条件对MultiIndex DataFrame进行切片

如何使用涉及日期的逻辑表达式对熊猫时间序列进行切片

使用索引值列表对Pandas MultiIndex DataFrame进行切片

熊猫DataFrame DatetimeIndex切片错误

pandas:尝试在DataFrame的切片副本上设置一个值

根据列上函数的结果对Pandas Dataframe进行切片

用DatetimeIndex切片Pandas DataFrame

pandas-用DateTimeIndex切片DataFrame的Python方式

使用其他列的索引对DataFrame进行切片

在指定的时间片上切片熊猫

如何切片pandas.DatetimeIndex?

如何切片pandas.DataFrame?

每第n行对Pandas DataFrame进行切片

Pandas:制作每月的 DataFrame 切片

在 Pandas 中对 DataFrame 进行排序和切片

多线程:我们如何使用 Java 进行时间切片?

在条件中使用排序切片 Pandas Dataframe

根据阈值和时间戳前后对 Pandas 进行切片

用步骤切片熊猫 DateTimeIndex

如何在切片器上按时间顺序显示 12 小时时间戳?(POWERBI)