21

文字列を含むpandas.DataFrameという列nameがあります。列に複数回出現する名前のリストを取得したいと思います。それ、どうやったら出来るの?

私は試した:

funcs_groups = funcs.groupby(funcs.name)
funcs_groups[(funcs_groups.count().name>1)]

ただし、シングルトン名は除外されません。

4

6 に答える 6

39

名前が重複している行を検索する場合(初めて表示する場合を除く)、これを試すことができます

In [16]: import pandas as pd
In [17]: p1 = {'name': 'willy', 'age': 10}
In [18]: p2 = {'name': 'willy', 'age': 11}
In [19]: p3 = {'name': 'zoe', 'age': 10}
In [20]: df = pd.DataFrame([p1, p2, p3])

In [21]: df
Out[21]: 
   age   name
0   10  willy
1   11  willy
2   10    zoe

In [22]: df.duplicated('name')
Out[22]: 
0    False
1     True
2    False
于 2013-03-06T13:10:39.193 に答える
11

ワンライナーは次のようになります。

x.set_index('name').index.get_duplicates()

インデックスには重複を見つけるためのメソッドが含まれていますが、列には同様のメソッドがないようです。

于 2013-12-01T13:48:49.013 に答える
8

value_countsは、重複の数も示します。

names = df.name.value_counts()
names[names > 1]
于 2016-09-18T23:19:48.407 に答える
3

与えられた応答のほとんどは、重複を見つけるのではなく、削除する方法を示しています。

以下は、重複するフィールドを持つデータフレームの各行を選択します。これにより、最初の発生後に重複するだけでなく、'name'インスタンスが検出されることに注意してください。引数は、最初または最後の出現を除外できる追加の値を受け入れます。keep

df[df.duplicated(['name'], keep=False)]

のパンダリファレンスはduplicated()ここにあります

于 2019-04-04T17:49:57.690 に答える
2

もう1つのライナーは次のようになります。

(df.name).drop_duplicates()
于 2016-06-14T04:35:13.960 に答える
1

私も同様の問題を抱えていて、この答えに出くわしました。

私はこれもうまくいくと思います:

counts = df.groupby('name').size()
df2 = pd.DataFrame(counts, columns = ['size'])
df2 = df2[df2.size>1]

df2.index重複する名前のリストが表示されます

于 2013-11-25T17:45:09.377 に答える