我正致力于分析社交网络的用户个人资料兴趣。我已经从社交网络数据库的导出生成了具有用户ID,名称和用户兴趣的数据框。我应该只在“用户兴趣”列中获取关键字。但实际上,我得到了一系列关键字和用户ID ...
User ID displayName interests
0 5705952d0eb2063205ca1d3c Jane Catch []
1 5705e99ac391580e00ea87c9 Heidi Kent [{u'text': u'psychology', u'_id': {u'$oid': u'...
2 5705efb6c391580e00ea87ca Rob Tuckinson [{u'text': u'learning', u'_id': {u'$oid': u'57...
我想在列interests
上进行一些数据清理,只保留用户兴趣列中的关键字。
今天,我有这方面的信息:
User ID,displayName,interests
"570df0f2a40cc20e00c15e09,Alejandra Zara,""[{u'text': u'pretend-play', u'_id': {u'$oid': u'570e57eba40cc20e00c161ea'}}, {u'text': u'autobiographical-memory', u'_id': {u'$oid': u'570e57eba40cc20e00c161e9'}}]"""
对于第一行,我只想保留以下信息:
"570df0f2a40cc20e00c15e09,Alejandra Zara,pretend-play', autobiographical-memory'
有关数据清理技术的任何想法吗? 每次,我都需要删除与用户ID相关的信息(每行不同,如:
u'_id': {u'$oid': u'570e57eba40cc20e00c161ea'}}
并删除{u'text': u
(位于每个关键字的开头)。
答案 0 :(得分:0)
如果我正确地阅读了这个问题,那么interests
列中的内容就是list
的{{1}}的字符串表示形式,您希望从中获取dict
具体价值。如果是这样,您可以使用ast.literal_eval
来解析它:
In [24]: df
Out[24]:
User ID displayName \
0 570df0f2a40cc20e00c15e09 Alejandra Zara
interests
0 [{u'text': u'pretend-play', u'_id': {u'$oid': ...
In [25]: df['interests'].map(lambda x: ','.join(i['text'] for i in ast.literal_eval(x)))
Out[25]:
0 pretend-play,autobiographical-memory
Name: interests, dtype: object