相关疑难解决方法(0)

如何使用多列中的值对pandas数据框进行排序?

我有以下数据框:

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)

python sorting dataframe pandas

63
推荐指数
4
解决办法
15万
查看次数

按值对Pandas DataFrame进行排序

我知道这个问题有很多答案,例如:如何使用多列中的值对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)

我怎样才能真正对转列进行排序.

任何建议表示赞赏!谢谢

python numpy dataframe python-3.x pandas

0
推荐指数
1
解决办法
5951
查看次数

标签 统计

dataframe ×2

pandas ×2

python ×2

numpy ×1

python-3.x ×1

sorting ×1