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