将特定单元格中的值拆分为数据帧中的行

时间:2018-11-24 13:57:35

标签: python pandas numpy dataframe

我正在尝试将数据帧转换为输出数据帧格式。在特定的单元格中有多个值,以“,”分隔。当我使用.stack()将许多值转换为行时,其余的空单元格将用NaN填充。 pandas中是否有任何通用的解决方案可以解决这个问题?

输入数据框:

   x1     y1        x2           x3          x4
   abc    x or y    v1,v2,v3     l1,l2,l3    self
   abc    z         no1,no2,no3  e1,e2,e3    self

输出数据框:

   x1    y1    x2     x3     x4
   abc   x     v1     l1     self
               v2     l2 
               v3     l3
         y     v1     l1     self
               v2     l2
               v3     l3
   abc   z     no1    e1     self
               no2    e2
               no3    e3

1 个答案:

答案 0 :(得分:0)

df.set_index(df.index).apply(lambda x: x.str.split(",").apply(pd.Series).stack()).reset_index(drop=True).fillna("")

输出:

    x1    x2   x3    x4
0  abc    v1   11  self
1         v2   12      
2         v3   13      
3  abc   no1   e1  self
4        no2   e2      
5        no3   e3