前提・実現したいこと
aというcsvのIDがその他複数のcsv(b, c)の項目にないデータだけを抽出したいです。
さらに抽出結果は、aのIDとNAMEを出力したいです。
NAMEはbとcにはない項目ですが、この出し方がわかりません。
各csvは下記のような感じになっています。
bとcをconcat
で縦結合してから重複排除したものとaを比較して差分を取っています。
a.csv
ID | NAME |
---|---|
100 | test_A |
200 | test_B |
b.csv
Id | AccountCode |
---|---|
200 | 1000 |
c.csv
AccountCode | Id |
---|---|
200 | 1000 |
300 | 2000 |
発生している問題・エラーメッセージ
見よう見まねでpandas
のisin
関数を使ってみましたが、IDだけしか出力されずNAMEが出力されません
該当のソースコード
python
1# csvを読み込む 2df = pd.read_csv('a.csv', sep='\t', encoding='utf-8', usecols=['ID','NAME']) 3 4# 比較するcsv 5df01 = pd.read_csv('b.csv', sep='\t', encoding='utf-8', usecols=['Id']) 6df02 = pd.read_csv('c.csv', sep='\t', encoding='utf-8', usecols=['AccountId']) 7df01['ID'] = df01['Id'] 8df02['ID'] = df02['AccountId'] 9 10# 比較対象データを結合 11r = pd.concat([df01['ID'], df02['ID']]) 12 13# IDの重複削除 14r2 = r[~r.duplicated()] 15 16# 比較対象データにないDeleteファイルのIDを抽出 17extract = df[~df['ID'].isin(r2)]['ID'] # ← ここでNAMEも出したい 18 19# 抽出結果をcsvに出力する 20extract.to_csv('result.csv', index=None)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/03 03:05