我有以下数据框:
df = pandas.DataFrame([{'c1':3,'c2':10},{'c1':2, 'c2':30},{'c1':1,'c2':20},{'c1':2,'c2':15},{'c1':2,'c2':100}])
Run Code Online (Sandbox Code Playgroud)
或者,以人类可读的形式:
c1 c2
0 3 10
1 2 30
2 1 20
3 2 15
4 2 100
Run Code Online (Sandbox Code Playgroud)
以下排序命令按预期工作:
df.sort(['c1','c2'], ascending=False)
Run Code Online (Sandbox Code Playgroud)
输出:
c1 c2
0 3 10
4 2 100
1 2 30
3 2 15
2 1 20
Run Code Online (Sandbox Code Playgroud)
但是以下命令:
df.sort(['c1','c2'], ascending=[False,True])
Run Code Online (Sandbox Code Playgroud)
结果是
c1 c2
2 1 20
3 2 15
1 2 30
4 2 100
0 3 10
Run Code Online (Sandbox Code Playgroud)
这不是我所期望的.我希望第一列中的值从最大到最小排序,如果第一列中有相同的值,则按第二列中的升序值排序.
有人知道它为什么不能按预期工作吗?
添加
这是复制粘贴:
>>> df.sort(['c1','c2'], ascending=[False,True])
c1 c2
2 1 20
3 2 15 …Run Code Online (Sandbox Code Playgroud) 我知道这个问题有很多答案,例如:如何使用多列中的值对pandas数据框进行排序?
我尝试了用户提供的解决方案,但我无法获得排序列.
我构建了一个DataFrame:
weekly = {'Tweet ID': Series(tweetID),
'Fecha de Publicación': Series(tweetDate),
'Tweet': Series(textStatus),
'Retweets': Series(retweetCount),
'Favoritos': Series(favoriteCount),
'Hashtags': Series(hashtags),
'Menciones': Series(mentions)}
weeklyAnalysis = DataFrame(weekly)
Run Code Online (Sandbox Code Playgroud)
然后我打电话给特定的推文:
maxTweets = weeklyAnalysis[['Tweet', 'Retweets']]
[weeklyAnalysis['Retweets'] >= promedioRts]
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,为了对转推列进行排序:
maxTweets.sort_values(by=['Tweet', 'Retweets'], ascending=[False, True])
Run Code Online (Sandbox Code Playgroud)
我怎样才能真正对转推列进行排序.
任何建议表示赞赏!谢谢