我从CSV中读取的数据中有一个pandas数据帧。一列用于组的名称,而另一列包含一个字符串(看起来像列表),如下所示:
Group | Followers
------------------------------------------
biebers | u'user1', u'user2', u'user3'
catladies | u'user4', u'user5'
bkworms | u'user6', u'user7'
我想尝试将"追随者"中的字符串分开。列,并为每个用户创建一个单独的数据框,以及显示他们所在的组的列。因此,对于此示例,我想获得以下内容:
User | Group
--------------------------------
user1 | biebers
user2 | biebers
user3 | biebers
user4 | catladies
user5 | catladies
user6 | bkworms
user7 | bkworms
有人建议采用最佳方法吗?这是一个截图:
答案 0 :(得分:2)
df.Followers = df.Followers.str.replace(r"u'([^']*)'", r'\1')
df.set_index('Group').Followers.str.split(r',\s*', expand=True) \
.stack().rename('User').reset_index('Group').set_index('User')
将User
保留为列。
df.Followers = df.Followers.str.replace(r"u'([^']*)'", r'\1')
df.set_index('Group').Followers.str.split(r',\s*', expand=True) \
.stack().rename('User').reset_index('Group') \
.reset_index(drop=True)[['User', 'Group']]