2016-09-16 12 views
1

データファイル(以下)を解析して、特定の日付より前にユーザーが開始した行のみを検索しようとしています。その後、CSVファイルの行をフィルタリングし、列に基づいて並べ替えます。

id, name, start_date, role, end_date, words 
657, mystical, 1351140260, cleaner, 1951140260, very lazy 
1987, kanyau, 1451189768, watchman, 1539742445, sleeping 

(開始日によって)昇順でこれらの行から単語列の値を注文誰が助けることはできますか?

P.S:ここでは初心者ですが、ここでは私が周りを遊んでいるものです。

date_pivot = "6/09/2010 00:00:00" 
d = datetime.strptime(date_pivot, "%d/%m/%Y %H:%M:%S") 
date_pivot = time.mktime(d.timetuple()) 
dp = int(date_pivot) 
infile = csv.DictReader(open("sample_data.csv","rb"), delimiter=",") 
previous_users = [row for row in infile if row['start_date'] < 'dp'] 
#print previous_users 
with open('final_test.csv','wb') as fou: 
    dw = csv.DictWriter(fou, previous_users.keys()) 
    dw.writeheader() 
    dw.writerow(my_dict) 
+0

単語列の値に開始日がないため、「...、これらの行の単語列の値を昇順(開始日)で順序付けしますそれらのすべてのために同じだろう)。あなたの質問を編集して、どのようにソート/リオーダした方がいいかを説明してください。 – martineau

答えて

0

はかなりシンプルであるべき。あなたが変換して、キーの機能のルックアップか入力する必要があるので、lambdaは最も単純です:

previous_users.sort(key=lambda row: int(row['start_date'])) 

注:フィールド名としてDictWriterprevious_users.keys()を渡すと、二重に間違っています。 1つ目は、previous_userslistdictであり、dictでないため、previous_users[0].keys()(空でないことを確認した後)を実行する必要があります。 2つのdictには順序が定義されていないため、出力列が再配置される可能性があります。それが問題ではないなら、それでは。しかし、フィールド名を明示的に希望の順序で渡すか、またはDictReaderから正しい順序で読み込むことをお勧めします。 csv.DictWriter(fou, infile.fieldnames)

その他の入力ミス:おそらくint(row['start_date']) < dpを比較したいと思います。 intに変換する必要があり、文字列"dp"ではなく、dpの値と比較したいと考えています。

関連する問題