2017-05-08 87 views
2

我有一個列表,我將它添加到一個熊貓數據框中,它包含一個十進制值的範圍。 我想把它分成3個範圍的每個範圍代表一個價值用一個值替換一個值的範圍

sents=[] 
for sent in sentis: 
if sent > 0: 
    if sent < 0.40: 
     sents.append('negative') 
    if (sent >= 0.40 and sent <= 0.60): 
     sents.append('neutral') 
    if sent > 0.60 
     sents.append('positive') 

我的問題是如果在大熊貓更有效的方式來做到這一點,因爲我想實現這個更大的列表和

在此先感謝。

回答

0

列表理解:

['negative' if x < 0.4 else 'positive' if x > 0.6 else 'neutral' for x in sentis] 
2

您可以使用pd.cut生產是categorical類型,並有適當的標籤結果。

爲了解決該neutral類別之中的.4.6,我加減最小浮動小量

sentis = np.linspace(0, 1, 11) 
eps = np.finfo(float).eps 

pd.DataFrame(dict(
     Value=sentis, 
     Sentiment=pd.cut(
      sentis, [-np.inf, .4 - eps, .6 + eps, np.inf], 
      labels=['negative', 'neutral', 'positive'] 
     ), 
    )) 

    Sentiment Value 
0 negative 0.0 
1 negative 0.1 
2 negative 0.2 
3 negative 0.3 
4 neutral 0.4 
5 neutral 0.5 
6 neutral 0.6 
7 positive 0.7 
8 positive 0.8 
9 positive 0.9 
10 positive 1.0 
+0

非常感謝正是我要找的 –