sort_values()得到了意外的关键字参数'by'

sak*_*uis 7 python dataframe pandas

for i in str_list:   #str_list is a set contain some strings 
    df.loc[i].sort_values(by = 'XXX')
**TypeError**: sort_values() got an unexpected keyword argument 'by' ".
>>> type(df.loc[i])
>>> pandas.core.frame.DataFrame
Run Code Online (Sandbox Code Playgroud)

但是它在for循环之外起作用!

df.loc['string'].sort_values(by = 'XXX')
>>> type(df.loc['string'])
>>> pandas.core.frame.DataFrame
Run Code Online (Sandbox Code Playgroud)

我糊涂了。

kos*_*nik 8

这是因为在您的情况下,loc运算符的结果是一个pandas.Series对象。在sort_values这种情况下没有一个关键字参数by,因为它只能排序的序列值。有一个在签名中的差异,当你调用sort values一个pandas.DataFrame

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html

当你打电话sort_valuespandas.Series

http://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.Series.sort_values.html