如何在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
相关产品推荐
相关产品推荐

