我有一個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 2015-07-31 18:36:10
名列表的一個內膽可以是:
x.set_index('name').index.get_duplicates()
索引中包含的方法爲找到重複,列似乎沒有類似的方法..
這正是我所需要的。謝謝@idoda! – propjk007 2015-12-14 22:33:12
這個「set_index()」是否銷燬了原始數據幀的索引x?我應該在數據框的副本上運行此命令嗎? – 2017-08-18 10:37:04
另外一個內膽可以是:
(df.name).drop_duplicates()
value_counts會給你重複的次數爲好。
names = df.name.value_counts()
names[names > 1]
我比我更喜歡這個。 – DSM 2013-03-06 14:55:58
謝謝,我也從你那裏學到了一些東西。 – waitingkuo 2013-03-06 16:16:01