现在,我正在努力解决以下问题。我的数据框中有两个不同的ID,即Leading_ID和follower_ID(字符串)。 Leading_ID的特征在于一个唯一的ID。但是follower_ID具有三个不同的阶段:第一,ID可以由“无”分配,第二,ID可以由一个ID分配,第三,该ID具有多个以逗号分隔的ID。下表具体显示了结构:
leading_ID follower_ID
abcd None
dfgh cvnr,eee,rrrr
jrtz brtz
vvvv tttt,dddd
wwww None
... ...
我的目标是将所有follower_ID分开,并按照Leading_ID进行分组。因此,应删除由None分配的所有follower_ID。
leading_ID follower_ID
dfgh cvnr
dfgh eee
dfgh rrrr
jrtz brtz
vvvv tttt
vvvv dddd
... ...
通过执行我的代码似乎永远不会结束或花很长时间。
from itertools import product
df1 = pd.DataFrame([j for i in df['follower_ID'].dropna().apply(lambda x: x.split(',')).values
for j in product(*i)], columns=df.leading_ID)
How do I unnest (explode) a column in a pandas DataFrame?中描述的方法无效。
答案 0 :(得分:2)
使用:
from itertools import chain
#remove missing values
df = df.dropna()
#for better performance list comprehension with split
s = [x.split(', ') for x in df['follower_ID']]
#repeat values with flattening
df = pd.DataFrame({
'user' : df['leading_ID'].repeat([len(x) for x in s]),
'follower_ID' : list(chain.from_iterable(s))
})
print (df)
user follower_ID
1 dfgh cvnr
1 dfgh eee
1 dfgh rrrr
2 jrtz brtz
3 vvvv tttt
3 vvvv dddd