首頁 >後端開發 >Python教學 >如何有效地拆分 Pandas DataFrame 中的逗號分隔字串?

如何有效地拆分 Pandas DataFrame 中的逗號分隔字串?

Linda Hamilton
Linda Hamilton原創
2024-12-19 06:18:15944瀏覽

How to Efficiently Split Comma-Separated Strings in Pandas DataFrames?

在 Pandas DataFrame 中拆分逗號分隔的字串條目

輸入資料通常由用逗號等字元分隔的值構成。使用 Pandas 資料框時,有必要拆分這些字串條目並為每個值建立單獨的行。在本文中,我們將深入研究可有效實現此目標的方法。

利用Pandas 的.explode() 方法

在Pandas 版本0.25.0 和1.3.0 中引入, .explode() 方法為爆炸包含列表或數組的列提供了一種簡單有效的解決方案。它可以在單列和多列上運行,為處理複雜資料集提供了靈活性。

語法:

dataframe.explode(column_name)

範例:

import pandas as pd

# Dataframe with a column containing comma-separated values
df = pd.DataFrame({'var1': ['a,b,c', 'd,e,f'], 'var2': [1, 2]})

# Exploding the 'var1' column
df = df.explode('var1')

# Resulting dataframe with separate rows for each value
print(df)

用於爆炸多個的自訂向量化函數列

對於需要分解多個列的更複雜場景,自訂向量化函數可以提供通用的解決方案:

函數定義:

def explode(df, lst_cols, fill_value='', preserve_index=False):
    # Calculate lengths of lists
    lens = df[lst_cols[0]].str.len()

    # Repeat values for non-empty lists
    res = (pd.DataFrame({
                col:np.repeat(df[col].values, lens)
                for col in df.columns.difference(lst_cols)},
                index=np.repeat(df.index.values, lens))
             .assign(**{col:np.concatenate(df.loc[lens>0, col].values)
                            for col in lst_cols}))

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

    # Revert index order and reset index if requested
    res = res.sort_index()
    if not preserve_index:
        res = res.reset_index(drop=True)
    return res

範例:

# Dataframe with multiple columns containing lists
df = pd.DataFrame({
    'var1': [['a', 'b'], ['c', 'd']],
    'var2': [['x', 'y'], ['z', 'w']]
})

# Exploding 'var1' and 'var2' columns
df = explode(df, ['var1', 'var2'])

# Resulting dataframe with separate rows for each list item
print(df)

分群轉換

分組轉換

def split_fun(row):
    return [row['var1'].split(',')]
分組轉換

分組轉換
# Dataframe with a column containing comma-separated values
df = pd.DataFrame({'var1': ['a,b,c', 'd,e,f'], 'var2': [1, 2]})

# Creating a new column with split values using transform
df['var1_split'] = df.transform(split_fun)

# Unnest the newly created column to separate rows
df = df.unnest('var1_split')

# Resulting dataframe with separate rows for each value
print(df)

分組轉換

分組轉換>另一種方法涉及使用.transform()來應用一個自訂函數,用於分割字串條目並建立新的行:自訂函數:範例:結論根據資料集的具體要求和複雜程度,可以採用不同的方法進行分割Pandas資料框中以逗號分隔的字串條目。利用 .explode() 方法提供了一種簡單而高效的方法,而自訂向量化函數則為處理更複雜的場景提供了靈活性。

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

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