Python sort_values()获取了意外的关键字参数';由';
但是它在for循环之外工作Python sort_values()获取了意外的关键字参数';由';,python,pandas,dataframe,Python,Pandas,Dataframe,但是它在for循环之外工作 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.Data
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
我很困惑。这是因为
loc
操作符的结果在您的例子中是一个pandas.Series
对象。在本例中,sort_values
没有关键字参数by
,因为它只能对序列值进行排序。在pandas.DataFrame
在pandas.Series
要添加到答案中,
为什么它在一种情况下返回一个序列,在另一种情况下返回一个数据帧
.loc函数在第一种情况下返回一个序列
对于stru列表中的i:#stru列表是包含一些字符串的集合
df.loc[i].sort_值(按='XXX')
因为参数i在数据帧中只出现一次
在第二种情况下,“字符串”是重复的,因此将返回一个数据帧
df.loc['string'].sort_值(by='XXX')
如果'string'参数不重复,则
请注意,如果.loc中的参数在列表中,则也存在一些差异。
比如说
df.loc['string']->返回一个序列
df.loc[['string']]->返回一个数据帧
也许在第二种情况下,您将['string']作为参数而不是'string'
希望这有帮助。
df.loc[something]
可能会返回一个序列或数据帧。如果索引中多次出现something
,则结果为数据帧。
df.loc['string'].sort_values(by = 'XXX')
>>> type(df.loc['string'])
>>> pandas.core.frame.DataFrame