Python 3.3 と Pandas 0.10 の使用
複数の CSV ファイルを連結して構築された DataFrame があります。まず、特定の文字列を含む Name 列のすべての値を除外します。結果は次のようになります (簡潔にするために短縮されていますが、実際にはさらに列があります)。
Name ID
'A' 1
'B' 2
'C' 3
'C' 3
'E' 4
'F' 4
... ...
今私の問題は、「重複」値の特別なケースを削除したいということです。この ID にマップされている対応する Name 値が類似していないすべての ID 重複 (実際には行全体) を削除したいと考えています。上記の例では、ID 1、2、および 3 の行を保持したいと考えています。ID=4 の場合、名前の値は等しくないため、それらを削除したいと考えています。
次のコード行を使用しようとしました (ここでの提案に基づいて: Python Pandas: remove entrys based on the number of occuring )。
コード:
df[df.groupby('ID').apply(lambda g: len({x for x in g['Name']})) == 1]
しかし、それは私にエラーを与えます:
ValueError: Item wrong length 51906 instead of 109565!
編集:
を使用する代わりに、apply()
も使用しtransform()
てみましたが、エラーが発生します: AttributeError: 'int' object has no attribute 'ndim'
。関数ごとにエラーが異なる理由についての説明は、非常にありがたいです!
また、上記の例で ID = 3 のすべての行を保持したいと考えています。
前もって感謝します、Matthijs