gpt4 book ai didi

python - 将包含元组列表的列转换为多列

转载 作者:行者123 更新时间:2023-11-30 22:12:40 26 4
gpt4 key购买 nike

我有一个数据框,其中一列包含不均匀的元组列表。元组的长度都相同,只是列表不均匀。我想在框架内融化这一列,以便新列将附加到现有列,并且行将被复制。就像这样:

df
name id list_of_tuples
0 john doe abc-123 [('cat',100,'xyz-123'),('cat',96,'uvw-456')]
1 bob smith def-456 [('dog',98,'rst-789'),('dog',97,'opq-123'),('dog',95,'lmn-123')]
2 bob parr ghi-789 [('tree',100,'ijk-123')]

df_new
name id val_1 val_2 val_3
0 john doe abc-123 cat 100 xyz-123
1 john doe abc-123 cat 96 uvw-456
2 bob smith def-456 dog 98 rst-789
3 bob smith def-456 dog 97 opq-123
4 violet parr def-456 dog 95 lmn-123
5 violet parr ghi-789 tree 100 ijk-123

对于我当前的方法,我正在创建一个新的数据帧,其中使用 itertools 的链功能,但我想摆脱创建整个其他数据帧并将其合并回“id”列的情况。

这是我当前的代码:

df_new = pd.DataFrame(list(chain.from_iterable(df.matches)),columns=['val_1','val_2','val_3']).reset_index(drop=True)
df_new['id'] = np.repeat(df.id.values, df['list_of_tuples'].str.len())

最佳答案

解除列表的嵌套,然后我们concat

s=df.list_of_tuples
pd.concat([pd.DataFrame({'id':df.id.repeat(s.str.len())}).reset_index(drop=True),pd.DataFrame(np.concatenate(s.values))],axis=1)
Out[118]:
id 0 1 2
0 abc-123 cat 100 xyz-123
1 abc-123 cat 96 uvw-456
2 def-456 dog 98 rst-789
3 def-456 dog 97 opq-123
4 def-456 dog 95 lmn-123
5 ghi-789 tree 100 ijk-123

关于python - 将包含元组列表的列转换为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51030465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com