我定义了一个函数如下......
def getSentiment(x):
vs = vaderSentiment
col = vs(x['messages'].encode('utf-8', 'replace'))
return col
我正在应用函数的DataFrame列包含每行的单个字符串(两个示例)......
There are some classic 'Cat' ones about seatbelts
That would be the fighters steroids… I've told you
当我使用...
应用该功能时df['sentiment']=df.apply(getSentiment, axis=1)
该函数产生的dicts在新的情绪列中转换为字符串格式(两行作为示例)...
sentiment
{'compound': 0.4404, 'neg': 0.0, 'neu': 0.919, 'pos': 0.081}
{'compound': 0.4404, 'neg': 0.0, 'neu': 0.256, 'pos': 0.744}
有没有办法应用函数,以便dict中的键值对作为单独的列(除了其他变量之外)返回,如下所示:
compound neg neu pos
0.4404 0.0 0.919 0.081
0.4404 0.0 0.256 0.744
除此之外,我还尝试使用DataFrame.from_dict
并在此处搜索其他一些答案,但似乎没有什么适用。
答案 0 :(得分:1)
如果列generateLink()
的值为字符串,您可apply
函数ast.literal_eval将其转换为sentiment
:
dictionary
如果列import ast
print df
# sentiment tmp
#0 {'compound': 0.4404, 'neg': 0.0, 'neu': 0.919,... aa
#1 {'compound': 0.4404, 'neg': 0.0, 'neu': 0.256,... sss
print type(df['sentiment'][0])
#<type 'str'>
df1 = df['sentiment'].apply(lambda x: pd.Series(ast.literal_eval(x)))
print df1
# compound neg neu pos
#0 0.4404 0 0.919 0.081
#1 0.4404 0 0.256 0.744
的值为词典:
sentiment