Python 解包数据帧值中的集合并复制到行中
有一个pandas数据框,其中包含一列可能具有任意长度的集合:Python 解包数据帧值中的集合并复制到行中,python,pandas,Python,Pandas,有一个pandas数据框,其中包含一列可能具有任意长度的集合: n = np.nan stack1 = pd.DataFrame.from_dict( {'letter1': ['a','b','c','y'], 'letter2': [ 'o','p', 'q', 'y'], 'overlap': [ {'v'},{'c'}, {'c'}, {'v', 'c'}] }) stack1.reset_index(inplace=Tru
n = np.nan
stack1 = pd.DataFrame.from_dict(
{'letter1': ['a','b','c','y'],
'letter2': [ 'o','p', 'q', 'y'],
'overlap': [ {'v'},{'c'}, {'c'}, {'v', 'c'}]
})
stack1.reset_index(inplace=True, drop=True)
从这个数据框架中,我如何解包集合的内容并从每个解包的元素中创建新行?如果该解决方案也适用于列表和元组等其他容器,那就太好了
预期结果:
试试这个:
In [32]: col_to_unpack = 'overlap'
In [33]: df = stack1.copy()
In [34]: pd.DataFrame({
...: col:np.repeat(df[col].values, df[col_to_unpack].str.len())
...: for col in df.columns.difference([col_to_unpack])
...: }).assign(**{col_to_unpack:np.concatenate(df[col_to_unpack].map(list).values)})[df.columns.tolist()]
...:
Out[34]:
letter1 letter2 overlap
0 a o v
1 b p c
2 c q c
3 y y c
4 y y v