Python 用一个值替换一个值范围

Python 用一个值替换一个值范围,python,pandas,Python,Pandas,我有一个列表,我正在添加到熊猫数据框中,它包含一系列十进制值。 我想把它分成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

我有一个列表,我正在添加到熊猫数据框中,它包含一系列十进制值。 我想把它分成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')
sents=[]
对于发送到sentis:
如果发送>0:
如果发送<0.40:
sents.append('negative')
如果(发送>=0.40,发送0.60
sents.append('positive')
我的问题是,在熊猫中是否有更有效的方法来实现这一点,因为我正试图在更大的列表上实现这一点

提前感谢。

列表理解:

['negative' if x < 0.4 else 'positive' if x > 0.6 else 'neutral' for x in sentis]
[“负”如果x<0.4,则为“正”,如果x>0.6,则为“中性”,表示sentis中的x]

您可以使用
pd.cut
生成类型为
category
且具有适当标签的结果

为了修复
中性
类别中包含的
.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

非常感谢,这正是我想要的