1
디스크에서 pandas DataFrame으로 csv 파일을 읽고 인덱스 타임 스탬프에 따라 DataFrame을 슬라이스/필터링하려고합니다.DatetimeIndex에서 pandas 타임 스탬프를 사용하여 슬라이스
이 (단축 코드 조각)는 다음과 같이 데이터가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
을 제공합니다.
어떻게 조각난/필터링을 수행 할 수 있습니까? 내가 뭘 놓치고 있니?
샘플로 테스트하면 완벽하게 작동합니다 (print (df.index에서 시작) 참). 어쩌면 실제 데이터에서 'Zeit' 열에서 시작 및 종료 시간이 아닐 수도 있습니다. ['boolean indexing'] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing) -'print (df [(df.index> = start) & (df .index
jezrael