我的数据框如下
release count
0 2.18 602
1 3.0 617
2 1.9 168
3 2.15 590
4 2.21 622
5 2.19 606
6 2.17 595
7 2.20 617
8 2.3 617
我希望列count
的排序优先,然后列release
优先。
预期答案为
release count
2 1.90 168
3 2.15 590
6 2.17 595
0 2.18 602
5 2.19 606
7 2.20 617
4 2.21 622
8 2.30 617
1 3.00 617
答案 0 :(得分:0)
我认为有字符串,需要像浮点数那样进行排序。
将Series.argsort
的列转换为浮点以用于排序值的位置,因此添加了DataFrame.iloc
来进行更改顺序:
df = df.iloc[df['release'].astype(float).argsort()]
print (df)
release count
2 1.90 168
3 2.15 590
6 2.17 595
0 2.18 602
5 2.19 606
7 2.20 617
4 2.21 622
8 2.30 617
1 3.00 617
答案 1 :(得分:0)
答案 2 :(得分:0)
我们可以使用sort_values根据多个键对数据框进行排序。
df.sort_values(by=['count','release'], inplace = True)
第一个键count
将给出第一级排序,而release
将给出第二级排序。
您不必创建单独的函数即可对python进行排序
答案 3 :(得分:0)
我有个主意,并实现了以下
val df = spark.read.csv("s3://../parentFolder/")
//df.schema will give you `period` as one of the column
df.printSchema
root
|-- col1: string (nullable = true)
|-- .... //other columns go here
|-- period: string (nullable = true)
这现在对我有用。