在Python中使用Pandas从每列中获取前4个最大值

2024-03-29 14:51:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个栏目,显示积极和消极的分数情绪分析。输出如下:

scat=btweet[['sentiment_pos', 'sentiment_negative']]
scat

sentiment_pos    sentiment_negative

0.286              0.000
0.451              0.000
0.143              0.300
0.151              0.100

我想从每一列中得到最大值, 我试着这么做,但只得到了一列的最大值。你知道吗

scat.nlargest(4, 'sentiment_pos')

 sentiment_pos    sentiment_negative

    0.451             0.000
    0.286             0.000
    0.151             0.300
    0.143             0.100

我的输出应该是这样的

  sentiment_pos    sentiment_negative

    0.451             0.300
    0.286             0.100
    0.151             0.000
    0.143             0.000

有人能帮我写代码吗?你知道吗


Tags: 代码pos分数情绪消极sentimentnegativenlargest
2条回答

你可以试试这个函数。它取数据帧中每列中最大值的数目

    def TopMaxValues(n):

        sentiment_pos = []
        sentiment_negative=[]

        arrsentiment_pos=np.array(sentimentdf['sentiment_pos'])
        arrsentiment_negative=np.array(sentimentdf['sentiment_negative'])
        idx1 = list((-arrsentiment_pos).argsort()[:n])
        idx2 = list((-arrsentiment_negative).argsort()[:n])

        for MaxValue in range(len(idx1)):
            sentiment_pos.append(sentimentdf['sentiment_pos'][idx1[MaxValue]])
            sentiment_negative.append(sentimentdf['sentiment_negative'][idx2[MaxValue]])

        sentimentdf['sentiment_pos']=sentiment_pos
        sentimentdf['sentiment_negative']=sentiment_negative    

        return resultsdf    

您可以通过numpy将此计算矢量化。你知道吗

例如,对于每个列:-你知道吗

df = pd.DataFrame(np.sort(df.values, axis=0)[::-1][:2], columns=df.columns)

结果:

   sentiment_pos  sentiment_negative
0          0.451                 0.3
1          0.286                 0.1

相关问题 更多 >