问题描述:
DataFrame对象的explode()方法可以按照指定的列进行纵向展开,一行变多行,如果指定的列中有列表则列表中每个元素展开为一行,其他列的数据进行复制和重复。
该方法还有个参数ignore_index,设置为True时自动忽略原来的索引。
如果有多列数据中都有列表,但不同列的结构不相同,可以依次按多列进行展开。
如果有多列数据中都有列表,且每列结构相同,可以一一对应地展开,类似于内置函数zip()的操作。
DataFrame对象的groupby()方法可以看作是explode()方法逆操作,按照指定的列对数据进行分组,多行变一行,每组内其他列的数据根据实际情况和需要进行不同方式的聚合。
如果除分组列之外的其他列进行简单聚合,可以直接调用相应的方法。
如果没有现成的方法可以调用,可以分组之后调用agg()方法并指定可调用对象作为参数,实现自定义的聚合方式。
如果每组内其他列聚合方式不同,可以使用字典作为agg()方法的参数,对不同列进行不同方式的聚合。