将DataFrame中的列表拆分为多个DataFrame

时间:2018-03-21 15:11:20

标签: pandas dataframe split

我有这个pandas DataFrame填充了填充字符串的列表,我希望将其拆分为两个框架:

输入:

df = pd.DataFrame({
  'A': {'a': ['NaN'],'b': ['1.11', '0.00']},
  'B': {'a': ['3.33', '0.22'],'b': ['NaN']},
  })

期望的输出:

df1 = pd.DataFrame({
  'A': {'a': ['NaN'],'b': ['1.11']},
  'B': {'a': ['3.33'],'b': ['NaN']},
  })
df2 = pd.DataFrame({
  'A': {'a': ['NaN'],'b': ['0.00']},
  'B': {'a': ['0.22'],'b': ['NaN']},
   })

我尝试使用适用于Series的apply函数,并且想知道是否有一种简单的方法来应用在整个df上实现此操作的操作。

1 个答案:

答案 0 :(得分:4)

您可以stackapply(pd.Series)

s=df.stack().apply(pd.Series)
s[0].unstack()
Out[508]: 
      A     B
a   NaN  3.33
b  1.11   NaN
s[1].unstack()
Out[509]: 
      A     B
a   NaN  0.22
b  0.00   NaN

如果确实需要单细胞对象

s[0].unstack().applymap(lambda x : [x])
Out[512]: 
        A       B
a   [NaN]  [3.33]
b  [1.11]   [NaN]
s[1].unstack().applymap(lambda x : [x])
Out[513]: 
        A       B
a   [nan]  [0.22]
b  [0.00]   [nan]