【发布时间】:2019-12-03 20:35:58
【问题描述】:
我有以下具有混合数据类型的 pandas DataFrame:字符串和整数值。我想使用多个列按降序对该 DataFrame 的值进行排序:Price 和Name。字符串值(即Name)应该按字母顺序排序,或者实际上可以完全忽略,因为最重要的是数值。
问题是目标列的列表可以同时包含字符串和整数列,例如target_columns = ["Price","Name"]
d = {'1': ['25', 'AAA', 2], '2': ['30', 'BBB', 3], '3': ['5', 'CCC', 2], \
'4': ['300', 'DDD', 2], '5': ['30', 'DDD', 3], '6': ['100', 'AAA', 3]}
columns=['Price', 'Name', 'Class']
target_columns = ['Price', 'Name']
order_per_cols = [False] * len(target_columns)
df = pd.DataFrame.from_dict(data=d, orient='index')
df.columns = columns
df.sort_values(list(target_columns), ascending=order_per_cols, inplace=True)
目前,此代码失败并显示以下消息:
TypeError: '
预期输出:
Price Name Class
300 DDD 2
100 AAA 3
30 DDD 3
30 BBB 3
25 AAA 2
5 CCC 2
【问题讨论】:
-
你的预期输出是什么?
-
@Erfan:请看我的更新。但正如我所说,如果在
target_columns中有某种方法可以识别字符串列的排序,则可以忽略它们。 -
那为什么不直接
df = df.sort_values('Price', ascending=False)呢?