How to explode a list inside a Dataframe cell into separate rows

后端 未结 11 2350
天命终不由人
天命终不由人 2020-11-22 10:20

I\'m looking to turn a pandas cell containing a list into rows for each of those values.

So, take this:

If I\'d like to unpack and stack the value

11条回答
  •  清歌不尽
    2020-11-22 11:11

    Here is a potential optimization for larger dataframes. This runs faster when there are several equal values in the "exploding" field. (The larger the dataframe is compared to the unique value count in the field, the better this code will perform.)

    def lateral_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
    

提交回复
热议问题