如何在Pandas DataFrame中将单元格拆分为多行?
Pandas DataFrame多内容单元格拆分为多行的实现方案
假设你的DataFrame中存在单元格包含用特定分隔符(如逗号、分号)分隔的多个内容,以下是具体的Python代码实现方案:
1. 模拟原始数据(对应你提供的raw图结构)
import pandas as pd # 构造示例数据,替换为你的实际数据 df = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob;Charlie', 'David,Eve,Frank'], 'Age': [25, 30, 35] })
2. 单列拆分实现
如果仅需拆分某一列(比如Name列),按以下步骤操作:
# 配置拆分参数:目标列、分隔符(根据你的实际分隔符修改,比如';'或'|') target_col = 'Name' delimiter = ',' # 示例用逗号,若你的数据是分号则改为';' # 将目标列的字符串按分隔符拆分为列表 df[target_col] = df[target_col].str.split(delimiter) # 将列表拆分为多行,同时保留其他列的对应值 result_df = df.explode(target_col, ignore_index=True) # 查看结果 print(result_df)
3. 处理空值与脏数据
如果存在空单元格或拆分后出现空值,可添加过滤逻辑:
# 拆分前先处理空字符串,避免生成空行 df[target_col] = df[target_col].apply( lambda x: x.split(delimiter) if pd.notna(x) and x.strip() else None ) # 拆分并过滤空值行 result_df = df.explode(target_col, ignore_index=True).dropna(subset=[target_col])
4. 多列同时拆分
如果有多个列需要拆分,可循环处理每一列:
# 需要拆分的列列表 split_cols = ['Name', 'Hobby'] # 示例列名,替换为你的实际列 for col in split_cols: df[col] = df[col].str.split(delimiter) df = df.explode(col, ignore_index=True) # 最终结果 print(df)
内容的提问来源于stack exchange,提问作者Sushant Panwar
相关产品推荐
相关产品推荐

