【发布时间】:2018-12-04 10:36:19
【问题描述】:
我有一个数据框,其中一列包含不均匀的元组列表。元组的长度都相同,只有列表不均匀。我想在框架内熔化此列,以便将新列附加到现有列并复制行。像这样:
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())
【问题讨论】: