2017-02-20 4 views
-1

に重複する値を持つ行を削除します。日付を発行し、第3列に予測値ですされて、私は最初の列の第二に、日付を予測しているCSVファイルがあると仮定し、単一のカラムと古いタイムスタンプ

forecast,issued,temp 
2016021700,2016021702,5.3 
2016021706,2016021702,6.3 
2016021712,2016021702,8.6 
2016021718,2016021702,5.1 
2016021700,2016021703,5.4 
2016021706,2016021703,6.4 

Pythonでは、私は自動的に同じ予測日と古い発行日の行を削除したいと思います。出力は、予測日に従って日付/時刻の順序でなければなりません。期待される結果は次のとおりです。

forecast,issued,temp 
2016021700,2016021703,5.4 
2016021706,2016021703,6.4 
2016021712,2016021702,8.6 
2016021718,2016021702,5.1 

すべてのヘルプは〜感謝

SOLUTION:私はこの使用してパンダを解く:

import pandas as pd 

df = pd.read_csv('data.csv') 
df = df.drop_duplicates(subset='forecast',keep='last') 
df = df.sort(['forecast'],ascending=True) 
df.to_csv('out.csv',index=False) 
+0

あなた自身で試してみてください。助けが必要な場合は、ここにコードを入力してください。 –

+0

ご意見ありがとうございます。残念ながら、私は実際にどこから始めるべきかわからず、私の努力はすべて私が期待していたものからあまりにも遠く、ここに投稿する価値はありませんでした。もし私が近づくなら私は分かち合うでしょう。この瞬間、どんな提案も役に立ちます。 – jazera

答えて

0

最も簡単な方法は、発行された日付に従ってファイルを並べ替えることであろう連続した重複を削除するにはgroupbyを使用します。

from itertools import groupby 

# open a csv_reader for the file 
data = sorted(csv_reader, key=lambda cols: make_date(cols[1])) 
no_dups_data = [] 
for key, group in groupby(data, key=lambda cols: cols[1]): 
    no_dups_data.append(next(group)) 

make_dateは、あなたが持っている形式で日付を解析する必要があります。そのためにはdatetimeモジュールを使用できるはずです。

dictを使って並べ替えを避けることもできますが、その解決法はかなり複雑です(しかし、良い演習になる可能性があります)。

+0

ありがとうございました。それは私にソートに関するいくつかのアイデアを与えました。私の最終的な解決策は、パンダ(下記のコード) – jazera

関連する問題