Python 将列表字典的值转换为浮点数

Python 将列表字典的值转换为浮点数,python,list,dictionary,type-conversion,Python,List,Dictionary,Type Conversion,这里是Python新手!我真的可以在我用Python做的情感项目上得到一些帮助 我已经建立了这本词典,我想用它来浏览我从《卫报》文章中抄来的评论。我想在guardian\u comments数据框中添加一个额外的列,它表示情绪评分列中的值是非常消极、消极、中立、积极还是非常积极: lookup\u dict={ “非常消极”:[-0.9,-0.8,-0.7,-0.6], “负”:[-0.5,-0.4,-0.3,-0.2,-0.1], “中性”:[0], “正”:[0.1,0.2,0.3,0.4,

这里是Python新手!我真的可以在我用Python做的情感项目上得到一些帮助

我已经建立了这本词典,我想用它来浏览我从《卫报》文章中抄来的评论。我想在
guardian\u comments
数据框中添加一个额外的列,它表示
情绪评分
列中的值是非常消极、消极、中立、积极还是非常积极:

lookup\u dict={
“非常消极”:[-0.9,-0.8,-0.7,-0.6],
“负”:[-0.5,-0.4,-0.3,-0.2,-0.1],
“中性”:[0],
“正”:[0.1,0.2,0.3,0.4,0.5],
“非常积极”:[0.6,0.7,0.8,0.9,1]}
监护人意见[‘情绪水平]]=监护人意见[‘情绪分数]].map(lambda x:lookup_dict[x])
然而,我收到了一个
KeyError
,我认为这是因为字典列表没有被转换成float。有谁能告诉我怎么做吗


谢谢大家!

lookup\u dict[x]
使用键
x
检索
lookup\u dict
中的条目
e、 g.
lookup\u dict[“非常负”]
将返回
[-0.9,-0.8,-0.7,-0.6]
lookup\u dict[-0.6]
将导致
键错误
所以你的lambda函数并不像你想象的那样

我认为最简单的解决办法是:

lookup_dict = {
    -0.9:"very_negative",
    -0.8:"very_negative",
    -0.7:"very_negative",
    -0.6:"very_negative",
    -0.5:"negative",
    -0.4:"negative",
    -0.3:"negative",
    -0.2:"negative",
    -0.1:"negative",
    0:"neutral",
    0.1:"positive",
    0.2:"positive",
    0.3:"positive",
    0.4:"positive",
    0.5:"positive",
    0.6:"very_positive",
    0.7:"very_positive",
    0.8:"very_positive",
    0.9:"very_positive",
    1:"very_positive"
}

guardian_comments['sentiment_level'] = guardian_comments['sentiment_score'].map(lambda x: lookup_dict[x])

lookup\u dict[x]
使用键
x
检索
lookup\u dict
中的条目
e、 g.
lookup\u dict[“非常负”]
将返回
[-0.9,-0.8,-0.7,-0.6]
lookup\u dict[-0.6]
将导致
键错误
所以你的lambda函数并不像你想象的那样

我认为最简单的解决办法是:

lookup_dict = {
    -0.9:"very_negative",
    -0.8:"very_negative",
    -0.7:"very_negative",
    -0.6:"very_negative",
    -0.5:"negative",
    -0.4:"negative",
    -0.3:"negative",
    -0.2:"negative",
    -0.1:"negative",
    0:"neutral",
    0.1:"positive",
    0.2:"positive",
    0.3:"positive",
    0.4:"positive",
    0.5:"positive",
    0.6:"very_positive",
    0.7:"very_positive",
    0.8:"very_positive",
    0.9:"very_positive",
    1:"very_positive"
}

guardian_comments['sentiment_level'] = guardian_comments['sentiment_score'].map(lambda x: lookup_dict[x])

如果希望保持词典的当前结构,最简单的方法是定义一个可以作为lambda应用于词典的helper函数:

def find_level(row):
    for key, value in lookup_dict.items():
        if row['sentiment_score'] in value:
            return key

df['sentiment_level'] = df.apply(lambda row: find_level(row), axis = 1)

#output:
   sentiment_score sentiment_level
0             -0.5        negative
1              0.5        positive
2              0.6   very_positive
3             -0.2        negative
4             -0.1        negative

如果希望保持词典的当前结构,最简单的方法是定义一个可以作为lambda应用于词典的helper函数:

def find_level(row):
    for key, value in lookup_dict.items():
        if row['sentiment_score'] in value:
            return key

df['sentiment_level'] = df.apply(lambda row: find_level(row), axis = 1)

#output:
   sentiment_score sentiment_level
0             -0.5        negative
1              0.5        positive
2              0.6   very_positive
3             -0.2        negative
4             -0.1        negative

您的代码片段远不是有用的,而且似乎与将内容转换为浮点无关。键不是浮点数,所以这不太可能是问题所在。可能问题在于您试图使用值中包含的浮点数作为键来查找相应的键。如果是这样,那就不是你使用字典的方式。你需要颠倒你的字典。你的代码片段远不是一个有用的东西,而且似乎与把东西转换成浮点数没有什么关系。键不是浮点数,所以这不太可能是问题所在。可能问题在于您试图使用值中包含的浮点数作为键来查找相应的键。如果是这样,那就不是你使用字典的方式。你需要把字典翻过来。非常感谢你,这解决了我的问题!非常感谢,这解决了我的问题!