私はこれに数日間苦労しています-私は多くの同様の投稿を読み、それらからのコード回答を使用しました。基本的に、私はこのデータフレームから行をフィルターで除外(削除)しようとしています:
Name: df
OrderQty InvoiceDate
CID
1000363 6 1/20/2020
1002047 1 10/14/2019
1003565 7 10/9/2019
1003680 5 10/2/2019
1010933 1 12/10/2019
[115547 rows x 2 columns]
Type : 'pandas.core.frame.DataFrame'
Index: CID
非常によく似た別のDataFrameを使用する:
Name: df2
OrderQty InvoiceDate
CID
1000363 6 1/20/2020
1002047 1 10/14/2019
1003565 7 10/9/2019
1003680 5 10/2/2019
1010933 1 12/10/2019
[6387 rows x 2 columns]
Type : 'pandas.core.frame.DataFrame'
Index: CID
列「CID」のdf2(CIDごとに1行-これらはdfから削除したいCIDです)とdf(同じCIDを持つ複数の行を持つ多くの行)の間には1対多の関係があります。
これまで、同じCIDを持つCIDを持つdfの行を削除するために、次のことを試みました。
new_df = df[df['CID']].isin(df2[df2['CID']])
KeyErrorを出します
cond = df['CID'].isin(df2['CID'])
new_df = df.drop(df[cond].index, inplace = True)
KeyErrorを出します
new_df = df['CID'].isin(df2).dropna()
KeyErrorを出します
new_df = df[~df['CID'].isin(df2)].dropna()
KeyErrorを出します
new_df = df.query('CID not in @df2')
エラーはありませんが、dfから削除および記録されません
new_df = df[~df.CID.isin(df2)]
AttributeErrorを与えます: 'DataFrame'オブジェクトには属性 'CID'がありません
私は現時点でかなり立ち往生しています-Pythonアプリを数回シャットダウン/リセットし、毎回読んださまざまな投稿からの異なるコードスニペット(上記)を使用しましたが、変更はありません。私が抱えている問題は、インデックスとしての「CID」または私が扱っている1対多の関係である可能性があると思いますか?
前もって感謝します!!!
Pandasdrop
はラベルで機能し、デフォルトではこれらのラベルがDataFrameのインデックスになります。あなたの場合、CIDがインデックスであるため、これは次のように単純である必要があります。
df_new = df.drop(df2.index)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加