首頁 >後端開發 >Python教學 >如何將 Pandas DataFrame 中的逗號分隔字串拆分為單獨的行?

如何將 Pandas DataFrame 中的逗號分隔字串拆分為單獨的行?

Linda Hamilton
Linda Hamilton原創
2024-12-25 21:50:14838瀏覽

How to Split Comma-Separated Strings in a Pandas DataFrame into Separate Rows?

拆分Pandas DataFrame 中的逗號分隔字串條目以建立單獨的行

問題:

問題:

問題:

問題:

In [1]: df.explode('var1')
Out[1]:
  var1  var2 var3
0    a     1   XX
1    b     1   XX
2    c     1   XX
3    d     2   ZZ
4    e     2   ZZ
5    f     2   ZZ
6    x     2   ZZ
7    y     2   ZZ

>我們有一個Pandas DataFrame,其中一列包含帶有逗號分隔值的字串。我們希望拆分每個 CSV 條目並為每個唯一值建立一個新行。例如,“a,b,c”應變為“a”,“b”,“c”。

解決方案:

import numpy as np

def explode(df, lst_cols, fill_value='', preserve_index=False):
    # Convert `lst_cols` to a list if it is a string.
    if isinstance(lst_cols, str):
        lst_cols = [lst_cols]

    # Calculate the lengths of each list in `lst_cols`.
    lens = df[lst_cols[0]].str.len()

    # Create a new index based on the lengths of the lists.
    idx = np.repeat(df.index.values, lens)

    # Create a new DataFrame with the exploded columns.
    exp_df = pd.DataFrame({
        col: np.repeat(df[col].values, lens)
        for col in df.columns.difference(lst_cols)
    }, index=idx).assign(**{
        col: np.concatenate(df.loc[lens > 0, col].values)
        for col in lst_cols
    })

    # Append rows with empty lists if necessary.
    if (lens == 0).any():
        exp_df = exp_df.append(df.loc[lens == 0, df.columns.difference(lst_cols)], sort=False).fillna(fill_value)

    # Revert the original index order and reset the index if requested.
    exp_df = exp_df.sort_index()
    if not preserve_index:
        exp_df = exp_df.reset_index(drop=True)

    return exp_df

選項1: DataFrame.explode() (Pandas 0.25.0 )
In [2]: explode(df, 'var1')
Out[2]:
  var1  var2 var3
0    a     1   XX
1    b     1   XX
2    c     1   XX
3    d     2   ZZ
4    e     2   ZZ
5    f     2   ZZ
6    x     2   ZZ
7    y     2   ZZ
DataFrame.explode () 方法是專門為此目的而設計的。它允許我們將類似列表的列(在本例中為逗號分隔的字串)拆分為單獨的行。 選項2:自訂向量化函數如果DataFrame.explode() 不可用或我們需要更多定制,我們可以創建自己的向量化函數:用法範例:

以上是如何將 Pandas DataFrame 中的逗號分隔字串拆分為單獨的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn