TypeError :(“sort_values()得到参数'axis'的多个值”,'出现在索引SUMLEV')

时间:2017-01-02 21:40:59

标签: python pandas

为什么这段代码

cdf = census_df[census_df['SUMLEV'] == 50]
cdf = cdf.apply(lambda x:x.sort_values('CENSUS2010POP', axis=0, ascending=False)).reset_index(drop=True)
cdf = cdf.groupby('STNAME').head(3)
cdf.head(20)

给出以下错误

TypeError: ("sort_values() got multiple values for argument 'axis'", 'occurred at index SUMLEV')

虽然此代码可以正常使用

cdf = census_df[census_df['SUMLEV'] == 50]
cdf = cdf.groupby('STNAME')
cdf = cdf.apply(lambda x:x.sort_values('CENSUS2010POP', axis=0, ascending=False)).reset_index(drop=True)
cdf = cdf.groupby('STNAME').head(3)
cdf.head(20)

但是在这里我需要做两次groupby,首先在排序之前和排序之后选择前3个值。我想先排序,然后分组,然后为每个组挑选3个。

可以找到csv文件here

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要更改一行:

cdf = cdf.apply(lambda x:x.sort_values('CENSUS2010POP', axis=0, ascending=False)).reset_index(drop=True)

为:

cdf = cdf.sort_values('CENSUS2010POP', ascending=False).reset_index(drop=True)

.sort_values()应用于数据框时,它会按您指定的列对所有列进行排序,例如CENSUS2010POP。您不必将排序应用于所有列。