Python 3.x 通过分隔多个字符串ID对所有ID组合进行分组
现在我正在努力解决以下问题。我的数据帧中有两个不同的ID,前导ID和跟随ID(字符串)。前导ID由一个唯一的ID表示。但是,后继ID有三个不同的阶段:第一个ID可以由None分配,第二个ID可以由一个ID分配,第三个ID有多个ID,这些ID用逗号分隔。下表具体显示了结构:Python 3.x 通过分隔多个字符串ID对所有ID组合进行分组,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,现在我正在努力解决以下问题。我的数据帧中有两个不同的ID,前导ID和跟随ID(字符串)。前导ID由一个唯一的ID表示。但是,后继ID有三个不同的阶段:第一个ID可以由None分配,第二个ID可以由一个ID分配,第三个ID有多个ID,这些ID用逗号分隔。下表具体显示了结构: leading_ID follower_ID abcd None dfgh cvnr,eee,rrrr jrtz brtz vvvv tttt,dddd ww
leading_ID follower_ID
abcd None
dfgh cvnr,eee,rrrr
jrtz brtz
vvvv tttt,dddd
wwww None
... ...
我的目标是分离所有的跟随者ID,并将它们沿着引导者ID分组。因此,所有没有分配的跟随者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)
中描述的方法不起作用。使用:
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
这仍然是一个令人不安的问题。