You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas如何将CSV导入的单列交替数字行拆分生成新列

实现方法

默认你导入数据后得到的DataFrame仅有一列,列名为raw,你可以按以下两种方式实现需求:


方法一:适用于数据严格按「文本行+数字行」交替排列的场景

代码更简洁,运行效率更高:

import pandas as pd

# 先去除每行首尾的空白符,避免空格干扰数字判断
df['raw'] = df['raw'].str.strip()

# 生成纯数字行的判断掩码
is_number_row = df['raw'].str.isnumeric()

# 分别提取文本列和数字列,按顺序对齐拼接
result = pd.DataFrame({
    "文本列": df.loc[~is_number_row, "raw"].values,
    "数字列": df.loc[is_number_row, "raw"].values
})

方法二:适用于存在多余空行、排列可能有异常的场景

鲁棒性更强,容错率更高:

import pandas as pd

df['raw'] = df['raw'].str.strip()
# 过滤掉空行
df = df[df['raw'].ne('')].reset_index(drop=True)

is_number_row = df['raw'].str.isnumeric()
# 每遇到一个非数字行就生成一个新分组,每个分组对应一行最终结果
df['group_id'] = (~is_number_row).cumsum()

# 分组聚合得到两列结果
result = df.groupby('group_id').agg(
    文本列 = ('raw', lambda x: x[~x.str.isnumeric()].iloc[0]),
    数字列 = ('raw', lambda x: x[x.str.isnumeric()].iloc[0])
).reset_index(drop=True)

运行完上述代码后,result就是你需要的两列格式的结果。


内容的提问来源于stack exchange,提问作者Zaind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:57:04