Splipting des chaînes de données de données de pandas séparées en virgule en lignes distinctes
Dans les données de données pandas, il faut souvent être divisé en raies individuelles. Pour y parvenir, plusieurs approches peuvent être utilisées:
Utilisation de série.Explode () ou DataFrame.Explode () :
Cette méthode est disponible dans Pandas 0.25.0 et ci-dessus et est spécifique colonnes.
df.explode('column_name')
en utilisant une fonction vectorisée :
pour des situations contenant plusieurs colonnes normales et multiples, une fonction vectorisée peut fournir une solution plus polyvalente. lst_cols, fill_value = '', préserve_index = false): # ... (les détails d'implémentation)
def explode(df, lst_cols, fill_value='', preserve_index=False): # ... (implementation details)Convertir des chaînes CSV en listes
: Si le but est uniquement pour convertir les chaînes CSV en listes, cela peut être réalisé en divisant les chaînes en utilisant Str.Split (). df ['var1']. str.split (',')
approche vectorisée personnalisée
df['var1'] = df['var1'].str.split(',')
Cette approche peut gérer plusieurs colonnes, y compris les colonnes normales et listes. col: np.repeat (x [col] .values, x [lst_col] .str.len ()) pour Col dans X.Column.Différence ([LST_COL]) }). attribution (** {lst_col: np.concatenate (x [lst_col] .values)}) [x.columns.tolist ()]
solution héritée:
exploded_df = pd.DataFrame({ col: np.repeat(x[col].values, x[lst_col].str.len()) for col in x.columns.difference([lst_col]) }).assign(**{lst_col: np.concatenate(x[lst_col].values)})[x.columns.tolist()]
Ces approches offrent diverses options pour diviser les chaînes séparées par les virgules dans les pandas DataFrames, s'adressant à des exigences spécifiques et des considérations de performances.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3