难以将五星评级转换为';正';和';负数';Python中的缩放

难以将五星评级转换为';正';和';负数';Python中的缩放,python,pandas,Python,Pandas,我有一个csv,它包含1-5的整数。我正在尝试编写一个新的csv,它接受原始csv中的任何1和2,并返回“负”,然后所有3、4和5都返回为“正”。以下是我目前所拥有的(我正在使用Pandas&TextBlob供参考): 以下是我的csv的外观: 我的for循环对每行只返回“负”。我确信这是一个简单的错误(我对Python非常陌生),任何帮助都将是惊人的。谢谢大家! 这应该行得通 for i in ratings.itertuples(): if i in sentlist:

我有一个csv,它包含1-5的整数。我正在尝试编写一个新的csv,它接受原始csv中的任何1和2,并返回“负”,然后所有3、4和5都返回为“正”。以下是我目前所拥有的(我正在使用Pandas&TextBlob供参考):

以下是我的csv的外观:

我的for循环对每行只返回“负”。我确信这是一个简单的错误(我对Python非常陌生),任何帮助都将是惊人的。谢谢大家!

这应该行得通

for i in ratings.itertuples():
    if i in sentlist:
        sentimentals.append("negative")
    else:
        sentimentals.append("positive")

如果只有一列,则无需将行作为元组循环。相反,只循环该列:

for i in ratings['rating']:
    if i in sentlist:
        sentimentals.append("negative")
    else:
        sentimentals.append("positive")

以下是使用和方法处理熊猫的方法:


另一种方法是,使用而不是循环来创建
“情感”


感伤=['negative'如果x替换
如果neg:
如果我在sentlist:
中,如果我在sentlist:中,则用
替换
如果我在sentlist:neg=True
中,则从上面删除行
。应该有效。@OD1995谢谢你的回答。当我进行更改时,现在只返回“肯定”。也许值得更新你的问题,以便更好地了解 评级
?也就是说,它有哪些列,也许是@OD1995这样的行的例子,它似乎是neg=True部分的问题。一旦该值设置为True,它将在for循环期间保持True,因为您没有设置任何方式使其变回False。您可以通过在insi中添加neg=False来修复此问题取消for循环(在第一个if语句之前)元组的值为0或1是很奇怪的。也许您应该在比较之前提取“rating”的值。
for i in ratings['rating']:
    if i in sentlist:
        sentimentals.append("negative")
    else:
        sentimentals.append("positive")
d = {1: 'negative',
     2: 'negative',
     3: 'positive',
     4: 'positive',
     5: 'postive'}

ratings = pd.read_csv(r'/Users/jackcarlson/Downloads/amazon-cell-phones-reviews/only_rating.csv')

(ratings['rating'].map(d)
 .to_csv('/Users/jackcarlson/Downloads/starreview.txt',
         index=False, header=False))
sentimentals = ['negative' if x <= 2 else 'positive' for x in ratings['rating']]