Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解包数据帧值中的集合并复制到行中_Python_Pandas - Fatal编程技术网

Python 解包数据帧值中的集合并复制到行中

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

有一个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=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