我有一个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)。我该如何解决这个问题?
答案 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
df
与pd.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