私はcsvを持っています。特定の基準に基づいて更新したいです。例:CSVファイルを連結して2つの列で重複をフィルタリングする
csv:
Name UniqueID Status
Apple 1121 Full
Orange 1122 Eaten
Apple 1123 Rotten
新しい値(また、CSVで):
csv1:
Apple 1121 Eaten
orange 1122 Eaten
Pear 1233 Wiggly
更新CSVファイルを次のようになります。
Name UniqueID Status
Apple 1121 Full
Orange 1122 Eaten
Apple 1123 Rotten
Pear 1233 Wiggly
Apple 1121 Eaten
そこで、基本的に同じUniqueID
を持つエントリをスキップおよびStatus
。新しいUniqueID
または既存のUniqueID
と異なるStatus
の場合は、別の行として含めたいと思います。上記の例からorange 1122 Eaten
は除外されました。
私は、csvをDataFrameに変換して、drop_duplicates
を使ってみました。
data = pd.concat([pd.DataFrame.from_csv(csv, csv1)].drop_duplicates(subset=['Status', 'UniqueID'])
しかし、それは予想通り、すべての重複を落としました。配列のキーに第二のカラム(unique id
)をキープ
cat csv csv1 | awk '{
Name UniqueID Status
Apple 1121 Full
Orange 1122 Eaten
Apple 1123 Rotten
Pear 1233 Wiggly
# Apple 1121 Eaten <-- this result was excluded
サブセット化* *名を追加しないのはなぜ? – Parfait
名前は必ずしも一意ではありません –
問題は再現できません。その除外されたレコードが表示されます。 [docs](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_csv.html)からの 'pd.DataFrame.from_csv'の代わりに' pd.read_csv'を使用すると*落胆した*メソッド、あなたは望みの結果を得ますか? – Parfait