数据清理:如何从pandas dataframe列中删除某些值?

时间:2017-02-04 11:02:55

标签: python pandas dataframe data-cleaning

我正致力于分析社交网络的用户个人资料兴趣。我已经从社交网络数据库的导出生成了具有用户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(位于每个关键字的开头)。

1 个答案:

答案 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