pandas dataframe 中的 explode 函数

Posted Sinsa_SI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas dataframe 中的 explode 函数相关的知识,希望对你有一定的参考价值。

在使用 pandas 进行数据分析的过程中,我们常常会遇到将一行数据展开成多行的需求,多么希望能有一个类似于 hive sql 中的 explode 函数。这个函数如下:

Code

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# create on 18/4/13
import pandas as pd


def dataframe_explode(dataframe, fieldname): 
    temp_fieldname = fieldname + '_made_tuple_' 
    dataframe[temp_fieldname] = dataframe[fieldname].apply(tuple)       
    list_of_dataframes = []
    for values in dataframe[temp_fieldname].unique().tolist(): 
        list_of_dataframes.append(pd.DataFrame(
            temp_fieldname: [values] * len(values), 
            fieldname: list(values), 
        ))
    dataframe = dataframe[list(set(dataframe.columns) - set([fieldname]))].merge(pd.concat(list_of_dataframes), how='left', on=temp_fieldname) 
    del dataframe[temp_fieldname]
    return dataframe


df = pd.DataFrame('listcol':[[1,2,3],[4,5,6]], "aa": [222,333])
df = dataframe_explode(df, "listcol")

Description

将 dataframe 按照某一指定列进行展开,使得原来的每一行展开成一行或多行。( 注:该列可迭代, 例如list, tuple, set)

以上是关于pandas dataframe 中的 explode 函数的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:查找不在另一个DataFrame中的DataFrame行[重复]

使用均值合并 Pandas 中的 DataFrame

如何在 Pandas 中遍历 DataFrame 中的行

如何在 Pandas 中遍历 DataFrame 中的行

Pandas库中的DataFrame

将 Pandas DataFrame 中的列组合到 DataFrame 中的列表列