提问人:GreatFilter 提问时间:10/31/2023 最后编辑:wjandreaGreatFilter 更新时间:10/31/2023 访问量:60
取消分组,然后对列表列表进行分组
Ungroup and then group a list of lists
问:
存在带有列表列表的 DataFrame。我需要将其取消分组到平面列表中,然后将其分组回取消分组之前的状态。
我的数据帧
d = {
"col0": ["x", "y", "z"],
"col1": ["Polygon", "MultiPolygon", "Polygon"],
"col2": [
[[1,2], [3,4]],
[[[1,2]], [[1,2], [3,4], [5,6]]],
[[1,2], [3,4]]]}
df = pd.DataFrame(data=d)
df
我将其取消分组到一个平面列表中
df2 = df
df2['col2'] = df2[['col1', 'col2']].apply(lambda x:
[item for sublist in x['col2'] for item in sublist]
if x['col1'] == 'MultiPolygon'
else [item for item in x['col2']]
, axis=1)
df2 = df2.explode('col2')
但在这种情况下,之后无法正确分组
#wrong result
df3 = df2.groupby(['col0', 'col1'])['col2'].apply(list).reset_index()
答: 暂无答案
评论
df
df2
df
df2 = df.copy()