clg*_*lg4 7 python group-by pandas iterable-unpacking
我想使用一个名为 Pandas 的数据框df
,它有一个 ID 列和一个包含可变数量元组的列表的列表列,所有的元组都具有相同的长度。看起来像这样:
ID list
1 [(0,1,2,3),(1,2,3,4),(2,3,4,NaN)]
2 [(Nan,1,2,3),(9,2,3,4)]
3 [(Nan,1,2,3),(9,2,3,4),(A,b,9,c),($,*,k,0)]
Run Code Online (Sandbox Code Playgroud)
我想将每个列表解包到列 'A','B','C','D' 中,代表每个元组中的固定位置。
结果应如下所示:
ID A B C D
1 0 1 2 3
1 1 2 3 4
1 2 3 4 NaN
2 NaN 1 2 3
2 9 2 3 4
3 NaN 1 2 3
3 9 2 3 4
3 A b 9 c
3 $ * k 0
Run Code Online (Sandbox Code Playgroud)
我尝试过df.apply(pd.Series(list)
但失败了len
,因为不同行上的列表元素不同。需要以某种方式解压到列并按 ID 转置?
In [38]: (df.groupby('ID')['list']
.apply(lambda x: pd.DataFrame(x.iloc[0], columns=['A', 'B', 'C', 'D']))
.reset_index())
Out[38]:
ID level_1 A B C D
0 1 0 0 1 2 3
1 1 1 1 2 3 4
2 1 2 2 3 4 NaN
3 2 0 NaN 1 2 3
4 2 1 9 2 3 4
5 3 0 NaN 1 2 3
6 3 1 9 2 3 4
7 3 2 A b 9 c
8 3 3 $ * k 0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2376 次 |
最近记录: |