Heim >Backend-Entwicklung >Python-Tutorial >Wie entschachtele ich Listenspalten in Pandas DataFrames?
Beim Umgang mit DataFrames, die Listenspalten enthalten, kann es nützlich sein, diese Listen in separate Zeilen zu „entfalten“.
Für eine einspaltige Explosion verwenden Sie explosion() direkt:
df = pd.DataFrame({'A': [1, 2], 'B': [[1, 2], [1, 2]]}) df_exploded = df.explode('B')
df_exploded = df.set_index('A').B.apply(pd.Series).stack().reset_index(level=0).rename(columns={0:'B'})
df_exploded = pd.DataFrame({'A':df.A.repeat(df.B.str.len()),'B':np.concatenate(df.B.values)})
df_exploded = df.reindex(df.index.repeat(df.B.str.len())).assign(B=np.concatenate(df.B.values))
from collections import ChainMap d = dict(ChainMap(*map(dict.fromkeys, df['B'], df['A']))) df_exploded = pd.DataFrame(list(d.items()),columns=df.columns[::-1])
newvalues=np.dstack((np.repeat(df.A.values,list(map(len,df.B.values))),np.concatenate(df.B.values))) df_exploded = pd.DataFrame(data=newvalues[0],columns=df.columns)
from itertools import cycle,chain l=df.values.tolist() l1=[list(zip([x[0]], cycle(x[1])) if len([x[0]]) > len(x[1]) else list(zip(cycle([x[0]]), x[1]))) for x in l] df_exploded = pd.DataFrame(list(chain.from_iterable(l1)),columns=df.columns)
Um die oben genannten Methoden zu verallgemeinern Verwenden Sie für mehrere Spalten die folgende Funktion:
def unnesting(df, explode): idx = df.index.repeat(df[explode[0]].str.len()) df1 = pd.concat([ pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1) df1.index = idx return df1.join(df.drop(explode, 1), how='left')
Um die Verschachtelung horizontal aufzuheben, ändern Sie die Funktion:
def unnesting(df, explode, axis): if axis==1: # Previous implementation else : df1 = pd.concat([ pd.DataFrame(df[x].tolist(), index=df.index).add_prefix(x) for x in explode], axis=1) return df1.join(df.drop(explode, 1), how='left')
Das obige ist der detaillierte Inhalt vonWie entschachtele ich Listenspalten in Pandas DataFrames?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!