pandas.DataFrame
には、文字列を含むname
という列があります。 私は列に複数回出現する名前のリストを取得したいと思います。それ、どうやったら出来るの?パンダを使って重複する名前を見つける方法は?
私が試した:
funcs_groups = funcs.groupby(funcs.name)
funcs_groups[(funcs_groups.count().name>1)]
をしかし、それはシングルトンの名前をフィルタリングしません。
pandas.DataFrame
には、文字列を含むname
という列があります。 私は列に複数回出現する名前のリストを取得したいと思います。それ、どうやったら出来るの?パンダを使って重複する名前を見つける方法は?
私が試した:
funcs_groups = funcs.groupby(funcs.name)
funcs_groups[(funcs_groups.count().name>1)]
をしかし、それはシングルトンの名前をフィルタリングしません。
あなたは(私たちがいることがわかり、初めて除く)重複した名前を持つ行を検索したい場合は、この
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
が、私は同様の問題を抱えていたし、この答えに出くわし試すことができます。
私は、これはまた、作品を推測:
counts = df.groupby('name').size()
df2 = pd.DataFrame(counts, columns = ['size'])
df2 = df2[df2.size>1]
とdf2.index
は
df2.sizeは組み込み関数であるため、df2.sizeの代わりにdf2 ['size']を使う方がよい。 – Lydia
に重複してあなたに1つのライナーを名前のリストを与えることができます:
x.set_index('name').index.get_duplicates()
インデックスはメソッドが含まれています重複を見つけるために、列は同様の方法を持つようには見えません。
これは私が必要としていたものです。ありがとう@idoda! – propjk007
この "set_index()"は、元のデータフレームxのインデックス付けを破棄しますか?データフレームのコピーでこのコマンドを実行する必要がありますか? –
もう一つのライナーを使用できます
(df.name).drop_duplicates()
value_countsは、同様にあなたの重複の数を与えます。
names = df.name.value_counts()
names[names > 1]
私はこれが私より優れています。 – DSM
ありがとう、私もあなたから何かを学んだ。 – waitingkuo