첫 번째 열에 날짜가 들어있는 CSV 파일/pandas 데이터 프레임을 처리하고 있습니다. 여기 datetime, 일부 필터링, 정렬 및 다시 색인화에 대한 일부 변환을 수행하려고합니다.두 작업 집합간에 순서가 불변하지 않은 이유는 무엇입니까?
내가 경험 한 것은 작업 집합의 순서를 변경하면 다른 결과를 얻게된다는 것입니다. 첫 번째 구성 결과가 다른 결과보다 큽니다. 아마 첫 번째 것이 "좋은"것입니다.
아무도 말해 줄 수있는 하위 작업 결과의 차이가 발생합니까?
"나쁜"과 "좋은"해결책은 무엇입니까?
사용자가 임의의 순서로 두 메서드를 호출 할 수 있고 여전히 양호한 결과를 얻을 수있는 안전한 순서 독립이 가능합니까? (가능 작업 교체 세트를 구현함으로써 좋은 결과를 얻을 수는?)
jdf1 = x.copy(deep=True)
jdf2 = x.copy(deep=True)
interval = [DATE_START, DATE_END]
dateColName = "Date"
구성 1 :
# Operation set 1: dropping duplicates, sorting and reindexing the table
jdf1.drop_duplicates(subset=dateColName, inplace=True)
jdf1.sort_values(dateColName, inplace=True)
jdf1.reset_index(drop=True, inplace=True)
# Operatrion set 2: converting column type and filtering the rows in case of CSV's contents are covering a wider interval
jdf1[dateColName] = pd.to_datetime(jdf1[jdf1.columns[0]], format="%Y-%m-%d")
maskL = jdf1[dateColName] < interval[0]
maskR = jdf1[dateColName] > interval[1]
mask = maskL | maskR
jdf1.drop(jdf1[mask].index, inplace=True)
대
구성 2
# Operatrion set 2: converting column type and filtering the rows in case of CSV's contents are covering a wider interval
jdf2[dateColName] = pd.to_datetime(jdf2[jdf2.columns[0]], format="%Y-%m-%d")
maskL = jdf2[dateColName] < interval[0]
maskR = jdf2[dateColName] > interval[1]
mask = maskL | maskR
jdf2.drop(jdf2[mask].index, inplace=True)
# Operation set 1: dropping duplicates, sorting and reindexing the table
jdf2.drop_duplicates(subset=dateColName, inplace=True)
jdf2.sort_values(dateColName, inplace=True)
jdf2.reset_index(drop=True, inplace=True)
결과 :
val1 = set(jdf1["Date"].values)
val2 = set(jdf2["Date"].values)
# bigger:
val1 - val2
# empty:
val2 - val1
도움 주셔서 감사합니다.
일부 데이터를 제공해 주시겠습니까? 'df.to_json()'의 출력이며, 문제를 재현하기에 충분히 작은 샘플이 바람직합니다. –
더 큰 (사전 처리 된) 데이터 세트에서이 문제가 발생했습니다. 문제를 소규모로 다시 작성하거나 환경에서 데이터를 얻는 것은 쉽지 않습니다. 데이터 형식을 다음과 같이 변경합니다 ('% d- % b- % y'). http://finance.google.ca/finance/historical?q=AAN&startdate=01+01 +2016 & enddate = 01 + 01 + 2017 & output = csv – user1802693