私は学生プロジェクトを開発しており、私の仕事は1つのデータフレームからのデータを分析することです。フィルタリング、準備などを行ったので、分析する必要がありますが、行が多すぎて手動で行うのが困難です。1つのパターンの行を見つける必要があります。すべてのデータは同じですが、1つの列が異なります。だから、私は持っています:
名前 | ジョブ | 給料 | 国 |
---|---|---|---|
アダム | 運転者 | 1300 | 米国 |
アダム | 運転者 | 1300 | 中国 |
ニック | 運転者 | 1320 | 米国 |
ニック | 運転者 | 1320 | 米国 |
ジョエル | 先生 | 1900年 | ブラジル |
ニック | パイロット | 2300 | カナダ |
ニック | パイロット | 2300 | ロシア |
そして私は持っていたい:
名前 | ジョブ | 給料 | 国 |
---|---|---|---|
アダム | 運転者 | 1300 | 米国 |
アダム | 運転者 | 1300 | 中国 |
ニック | パイロット | 2300 | カナダ |
ニック | パイロット | 2300 | ロシア |
私は簡単に使用できます:
df1 = df[df.duplicated(subset=['Name','Job', 'Salary'], keep=False)])
しかし、この後、すべてのデータが他のデータと同じである行もあります(これはありますが、したくありません):
名前 | ジョブ | 給料 | 国 |
---|---|---|---|
ニック | 運転者 | 1320 | 米国 |
ニック | 運転者 | 1320 | 米国 |
どういうわけかそれを行うことは可能ですか?
私はあなたのコードサンプルからわかるように、あなたがいないとグループ検索する任意の同じ値を持つ3つの列を、しかし、との最初の3列(4列目と異なる値)と同じ値を持ちます。
1つの方法:df1を生成した後、重複した行のペアを削除します。
df2 = df1[~df1.duplicated(keep=False)]
もう一つ、多分簡単な解決策は、あなたの元から開始することであるDFによって、グループを[「名前」、「仕事」、「給与」]と、複数の独特の持っている唯一のグループのまま国:
df1 = df.groupby(['Name','Job', 'Salary']).filter(
lambda grp: grp.Country.unique().size > 1)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加