【发布时间】:2018-12-17 08:13:50
【问题描述】:
我有一个值从 -5 到 10 的 df 列。我想将值 negative,将所有 0 值更改为 neutral,并将所有值 >= 1 更改为 positive .但是,下面的代码会为“否定”产生以下错误。
# Function to change values to labels
test.loc[test['sentiment_score'] > 0, 'sentiment_score'] = 'positive'
test.loc[test['sentiment_score'] == 0, 'sentiment_score'] = 'neutral'
test.loc[test['sentiment_score'] < 0, 'sentiment_score'] = 'negative'
Data: Data After Code:
Index Sentiment Index Sentiment
0 2 0 positive
1 0 1 neutral
2 -3 2 -3
3 4 3 positive
4 -1 4 -1
... ...
k 5 k positive
文件“pandas_libs\ops.pyx”,第 98 行,在 pandas._libs.ops.scalar_compare TypeError:“str”和“int”实例之间不支持“
我认为这与将负数视为字符串而不是浮点数/整数的函数有关,但是我尝试了以下代码来纠正此错误,但它没有任何改变。任何帮助将不胜感激。
test['sentiment_score'] = test['sentiment_score'].astype(float)
test['sentiment_score'] = test['sentiment_score'].apply(pd.as_numeric)
【问题讨论】:
-
你试过
float(test['sentiment_score']) > 0吗? -
@Joel 我希望不会,因为那是完全错误的
-
负数不被视为字符串。您将分 3 部分进行更换。当您到达
test.loc[test['sentiment_score'] == 0, 'sentiment_score'] = 'neutral'时,您已经从test.loc[test['sentiment_score'] > 0, 'sentiment_score'] = 'positive'向该列添加了大量字符串 -
@roganjosh 不错!
-
我想你最好创建一个新列来保存分类数据