使用Python中的Pandas

时间:2018-03-28 08:50:37

标签: python pandas numpy subset

我有两列显示正面和负面分数的情绪分析。这是输出:

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

有人可以帮我写代码吗?

2 个答案:

答案 0 :(得分:1)

您可以通过numpy

对此计算进行矢量化

例如,对于每列中最大的2个: -

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

答案 1 :(得分:0)

你可以尝试这个功能。它需要 n - 数据框

中每列的最大值数
    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