사용하여 CSV에서 워크 데이 데이터 선택 :내 데이터와 같은 포맷 파이썬
Username, Timestamp, Text
Joe Bloggs, Thu Oct 5 09:00:00 +0000 2017, Starting work
Jane Doe, Fri Oct 7 18:00:00 +0000 2017, Finished work
Tom Smith, Sat Oct 8 04:00:00 +0000 2017, Still coding this thing
이 같은 5M 행의 CSV를, 그리고 9 시부 터 오후 5 시까 지 월 - 금 내에서 단지들을 추출하고 싶습니다 .
더미 데이터와 행 단위 추출에 대한 게시물을 많이 읽었지만 전체적으로 데이터 세트를 실제로 필터링하고 예제가 불완전하거나 비 전문가에게 혼란을주었습니다.
편집 : 대답에 대한 @ivan7707에
감사합니다. 여기 내 완성 된 코드가 있습니다. 처음에는 아무 것도 포함시키지 않았습니다. 코드가 크게 잘못되었음을 알고있었습니다.
import csv
from datetime import datetime
main_file = csv.DictReader(open("source.csv","rb"))
for row in main_file: #points to csv
username = row['Username']
text = row['Text']
timestamp = row['Timestamp']
#Convert timestamp to useable format
timestamp = timestamp.split()
timestamp = (timestamp[2] + "-" + timestamp[1] + "-" + timestamp[5] + " " + timestamp[3])
dt = datetime.strptime(timestamp, "%d-%b-%Y %H:%M:%S")
if dt.isoweekday() in range(1, 6): #If day is Mon-Fri
if dt.hour in range(9, 17): #If hour is 9am-5pm
output_file.writerow([username,text,timestamp]) #Save
편집 2 (. 난 그렇게 분할에 의지 %의 Z에 문제가되었다) : 대화 ivan7707 다음
내가 코멘트에 있었다, 여기에 주 번호를 추가하는 코드입니다 데이터에 : 매주 스크립트에 대한
import csv
from datetime import datetime
main_file = csv.DictReader(open("source.csv","rb"))
for row in main_file:
username = row['Username']
text = row['Text']
timestamp = row['Timestamp']
#Convert timestamp to usable format as it was erroring with %z (+0000 part)
timestamp = timestamp.split()
timestamp = (timestamp[2] + "-" + timestamp[1] + "-" + timestamp[5] + " " + timestamp[3])
dt = datetime.strptime(timestamp, "%d-%b-%Y %H:%M:%S")
#Check if timestamp is within Mon-Fri 9am-5pm
if dt.isoweekday() in range(1, 6): #Mon-Fri
if dt.hour in range(9, 17): #9am-5pm
weekday_list.append(week)
output_file.writerow([username,text,timestamp,week]) #Writes to csv
#Handy bit to iterate one week per 5 business days
elif dt.isoweekday() == 7:
if len(weekday_list) > 1:
weekday_list = []
week += 1
출력
좋은 소리 포함되지 않는 범위 내에서 올바른 번호를 알고 있어야합니다. 왜 당신은 그것에 총을 맞고, 당신이 당신의 시도에 대해 가지고있는 어떤 특정한 문제를 사용하기 위해 다시 돌아 오지 않으면 우리는 기꺼이 도와 줄 것입니다. –
응답 해 주셔서 감사합니다. 나는 아래의 ivan7707 덕분에 문제를 해결했습니다. 비록 매주와 매월마다 CSV를 저장하는 것이 도움이된다면 정말 도움이 될 것입니다. –