我有一个拥有一百万行(ID)的Pandas Dataframe,其中一列作为列表列表。 e.g。
df = pd.DataFrame({' id':[1,2,3,4],' token_list':[[' a',& #39; b'' C&#39],[' C'' d'],[' A'&# 39,E'' F&#39],[' C'' F']]})
我想创建一个包含所有唯一令牌的字典 - ' a'' b'' c'' e' ,' f' (我已经将其作为单独的列表)作为键和每个键与之关联的所有ID。例如,{' a' :[1,3],' b':[1],' c':[1,2,4] ..}依此类推。
我的问题是有12000个这样的令牌,我不想使用循环来遍历第一帧中的每一行。并且似乎没有用。
答案 0 :(得分:2)
首先使用np.repeat
numpy.concatenate
进行展平,然后groupby
使用list
进行展开to_dict
:
a = np.repeat(df['id'], df['token_list'].str.len())
b = np.concatenate(df['token_list'].values)
d = a.groupby(b).apply(list).to_dict()
print (d)
{'c': [1, 2, 4], 'a': [1, 3], 'b': [1], 'd': [2], 'e': [3], 'f': [3, 4]}
详情:
print (a)
0 1
0 1
0 1
1 2
1 2
2 3
2 3
2 3
3 4
3 4
Name: id, dtype: int64
print (b)
['a' 'b' 'c' 'c' 'd' 'a' 'e' 'f' 'c' 'f']
答案 1 :(得分:2)
Message size to large