Python 使用groupby筛选重复值
我正在阅读文档以了解与groupby一起使用时的方法过滤器。为了理解它,我有以下场景: 我试图从我的数据帧df中获得按城市分组的重复名称。 以下是我的尝试:Python 使用groupby筛选重复值,python,pandas,Python,Pandas,我正在阅读文档以了解与groupby一起使用时的方法过滤器。为了理解它,我有以下场景: 我试图从我的数据帧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':
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中使用不同的列名
谢谢您应该按两列“城市”、“姓名”分组
您应该按两列“城市”、“名称”分组
复制一下怎么样:
复制一下怎么样:
非常感谢。请您解释一下,在什么情况下,您可以在lenx[column_name]中指定列名?@AfonsoSA lenx等于lenf,这将返回DataFramework的行号计数谢谢。请您解释一下,在什么情况下,您会在lenx[column_name]中指定列名?@AfonsoSA lenx等于Lenf,它将返回数据帧的行号计数
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
df[df.duplicated(['city', 'name'], keep=False)]