2017-05-08 8 views
2

パンダのデータフレームに追加するリストがあります。これには10進数の範囲が含まれています。 私は、各範囲が一つの値に表している3つの範囲に分割したい値の範囲を1つの値に置き換えます

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

あなたがタイプcategoricalのものであり、適切なラベルを持って結果を生成するためにpd.cutを使用することができます。

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

感謝を追加し、最小のフロートイプシロンを引きます –

関連する問題