如何将元组元组拆分成列

时间:2018-04-30 19:44:42

标签: python pandas dataframe tuples

我有一个pandas数据框,其中一列是带有嵌套元组的元组。嵌套元组有两个现有的id。我想将总元组中的每个元素分解为新的附加列。到目前为止,这是我的df:

df
  id1  id2   tuple_of_tuple
0 a    e    ('cat',100,('a','f'))
1 b    f    ('dog',100,('b','g'))
2 c    g    ('cow',100,('d','h'))
3 d    h    ('tree',100,('c','e'))

我试图在一小部分数据上实现下面的代码,它似乎有效。每个提取/展开的元素都有新的附加列。

df[['Link_1', 'Link_2','Link_3','Link_4']] = df['tuple_of_tuple'].apply(pd.Series)

但是当我将它应用于整个数据集时,我得到错误" ValueError:列必须与key"的长度相同。 (我应该提一下,有几个NaN徘徊,因为在tuple_of_tuple列的行中的整个条目将只是NaN)。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

使用python3.6' *解压缩运算符,这是一种非常优雅的方法:

df2 = pd.DataFrame(
    data=[[*i, *j] for *i, j in df.pop('tuple_of_tuple')], 
    columns=['link_1', 'link_2', 'link_3', 'link_4']
)

然后,您可以使用df2

dfpd.concat关联起来
pd.concat([df, df2], axis=1)

  id1 id2 link_1  link_2 link_3 link_4
0   a   e    cat     100      a      f
1   b   f    dog     100      b      g
2   c   g    cow     100      d      h
3   d   h   tree     100      c      e