2023-09-29 19:02:56
在 Pandas 中,若需基于特定列的分隔符拆分行,可通过 str.split() + explode() 的组合实现。以下是详细步骤和代码示例:
核心步骤导入 Pandas 库确保已安装 Pandas,并导入到 Python 环境:
import pandas as pd创建示例 DataFrame构造一个包含需拆分列的 DataFrame(例如 SPLIT 列以 " / " 分隔):
data = {'ASSET_CLASS': ['Core'], 'SPLIT': ['0.6 Government / 0.4 Credit']}df = pd.DataFrame(data)print(df)输出:
ASSET_CLASS SPLIT0 Core 0.6 Government / 0.4 Credit使用 str.split() 拆分列通过 str.split() 按指定分隔符(如 " / ")将字符串拆分为列表:
df["SPLIT"] = df["SPLIT"].str.split(" / ")print(df)输出:
ASSET_CLASS SPLIT0 Core [0.6 Government, 0.4 Credit]使用 explode() 展开列表将 SPLIT 列中的列表展开为多行,每行对应一个元素:
df = df.explode("SPLIT").reset_index(drop=True)print(df)输出:
ASSET_CLASS SPLIT0 Core 0.6 Government1 Core 0.4 Credit分隔符选择:str.split() 的参数需与实际分隔符一致(如 " / "、","、";" 等)。若分隔符为正则表达式特殊字符(如 .、*),需转义或使用 regex=True。
数据类型转换:若需拆分的列非字符串类型,先用 astype(str) 转换:
df["COLUMN"] = df["COLUMN"].astype(str).str.split(",")索引重置:explode() 后索引可能不连续,reset_index(drop=True) 可重置索引为连续整数。
多列拆分:若需同时拆分多列,可对每列分别应用 str.split() + explode(),或使用循环:
columns_to_split = ["COL1", "COL2"]for col in columns_to_split: df[col] = df[col].str.split(",") df = df.explode(col)通过上述方法,可高效实现 Pandas 中基于分隔符的行拆分,提升数据处理的灵活性和效率。