我有这个数据框
df_dataset=
CustomerId Surname Gender Birth Date City Salary Country
15634602 Hargrave Female 1979-12-18 Marseile 101348.88 France
15647311 Hill Female 1980-08-15 Barcelona 112542.58 Spain
15619304 Onio Female 1979-11-01 Marseile 113931.57 France
15701354 Boni Female 1982-08-24 Paris 93826.63 France
15737888 Mitchell Female 1978-01-09 Madrid 79084.10 Spain
我想知道西班牙国家工资最高的客户id,姓氏
df_dataset[['CustomerId','Surname','Salary']].groupby['Country'=='Spain'].sort_values['Salary',ascending=False]
它给了我错误
答案 0 :(得分:0)
我认为您不能使用 groupby['Country' == 'Spain']
,因为 groupby
是一种方法而不是索引对象,并且它期望列名作为其参数的一部分,而不是像 'Country'=='Spain'
这样的条件。如果您需要通过 df_dataset
过滤 Country
,您应该在继续获取最高工资之前使用 df_dataset[df_dataset['Country'] == '<country name>']
。此代码是否为您提供了预期的输出?
df_dataset[df_dataset['Country'] == 'Spain'].groupby(['Country'], sort=True)['Salary'].max()
答案 1 :(得分:0)
尝试使用 loc 和 group by,然后使用 pandas 查询进行过滤。
df_dataset[['CustomerId','Surname','Country','Salary']].loc[df_dataset.groupby(["CustomerId", "Surname"])["Salary"].idxmax()].query('Country=="Spain"')