Python 用一个值替换一个值范围
我有一个列表,我正在添加到熊猫数据框中,它包含一系列十进制值。 我想把它分成3个范围,每个范围代表一个值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
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
非常感谢,这正是我想要的