【发布时间】:2020-11-23 10:06:54
【问题描述】:
我有一个像这样的 Pandas DataFrame
df = pd.DataFrame(
{
'OrderID': ['o1','o2','o3','o4','o5'],
'CustomerID': ['c1','c1','c2','c2','c3'],
'CustomerRating': [5,1,3, NaN,NaN]
}
)
我想先按 CustomerID 对它进行排序,然后按 CustomerRating 排序,这样客户评级中的 NaN 就会排在最后。我知道df.sort_values(na_position = 'last'),但这仅适用于主要排序。如何使其适用于二级排序?
所以就像我将升序参数指定为每个元素对应一个排序级别的列表一样,我需要类似的 na_position 参数, 所以是这样的:
df.sort_values(['CustomerID', 'CustomerRating', ascending = [False, False], na_position =['last', 'last']]
我该怎么做?
谢谢
【问题讨论】:
-
请发布您的预期结果
-
提到的链接将帮助您根据空值的计数对数据框进行排序,但如果您按标识符列(OrderID 和 CustomerID)排序,它会重新洗牌。如果订购不重要,这可能是最好的解决方案。