我正在阅读文档,以了解与groupby一起使用时的方法过滤器。为了理解它,我有以下情形:
我正在尝试从DataFrame df中按城市分组的重复名称。 下面是我的尝试:
df = pd.DataFrame({
'city':['LA','LA','LA','LA','NY', 'NY'],
'name':['Ana','Pedro','Maria','Maria','Peter','Peter'],
'age':[24, 27, 19, 34, 31, 20],
'sex':['F','M','F','F','M', 'M'] })
df_filtered = df.groupby('city').filter(lambda x: len(x['name']) >= 2)
df_filtered
我得到的输出是:
city name age sex
LA Ana 24 F
LA Pedro 27 M
LA Maria 19 F
LA Maria 34 F
NY Peter 31 M
NY Peter 20 M
我期望的输出是:
city name age sex
LA Maria 19 F
LA Maria 34 F
NY Peter 31 M
NY Peter 20 M
我不清楚在哪种情况下我必须在“ groupby”方法和“ filter”方法内的“ len”中使用不同的列名
谢谢
答案 0 :(得分:4)
仅duplicated
:
df[df.duplicated(['city', 'name'], keep=False)]
答案 1 :(得分:1)
您应该groupby
两列'city','name'
Yourdf=df.groupby(['city','name']).filter(lambda x : len(x)>=2)
Yourdf
Out[234]:
city name age sex
2 LA Maria 19 F
3 LA Maria 34 F
4 NY Peter 31 M
5 NY Peter 20 M