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

如何在Pandas DataFrame中删除空格后的所有内容

批量处理Pandas DataFrame,删除空格后的所有内容

嘿,我来帮你搞定这个批量处理的需求!你现在能处理单个列,但其实Pandas里有个专门的方法可以一次性处理整个DataFrame的所有单元格——applymap(),正好适合你的场景。

核心思路

我们需要对每个单元格的字符串执行“找到第一个空格,截断并保留空格前内容”的操作,applymap()会遍历DataFrame的每一个元素,把处理逻辑应用到所有单元格上,不用逐个列去写重复代码。

完整代码示例

import pandas as pd

# 你的示例DataFrame
d = {'Australia' : pd.Series([0,'1980 (F)\n\n1957 (T)\n\n',1991], index=['Australia', 'Belgium', 'France']),
     'Belgium' : pd.Series([1980,0,1992], index=['Australia','Belgium', 'France']),
     'France' : pd.Series([1991,1992,0], index=['Australia','Belgium', 'France'])}
df = pd.DataFrame(d, dtype='str')

# 定义处理函数:删除第一个空格后的所有内容
def truncate_after_space(s):
    # 先确保元素是字符串类型,避免非字符串值报错
    s = str(s)
    # 找到第一个空格的位置
    space_pos = s.find(' ')
    # 存在空格就截断,否则返回原内容
    return s[:space_pos] if space_pos != -1 else s

# 批量应用到整个DataFrame
df_processed = df.applymap(truncate_after_space)

# 查看处理后的结果
print(df_processed)

更简洁的Lambda写法

如果你喜欢更紧凑的代码,可以用lambda表达式替代自定义函数,效果完全一样:

df_processed = df.applymap(lambda x: str(x).split(' ', 1)[0])

这里split(' ', 1)会把字符串按第一个空格分割成两部分,取索引为0的部分就是我们需要的内容;如果字符串里没有空格,split()只会返回一个元素,取索引0也不会报错。

处理后的结果示例

运行代码后,原DataFrame中Belgium行的Australia列值'1980 (F)\n\n1957 (T)\n\n'会被处理成'1980',其他无空格的单元格则保持原样,完美实现批量处理的目标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:23:41