选择多列和分组依据

时间:2021-08-01 13:30:59

标签: python pandas

我有这个数据框

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]

它给了我错误

2 个答案:

答案 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"')
相关问题