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

如何仅对DataFrame指定列的非NaN值执行除以1000的运算

解决方法

你执行失败并非因为NaN,pandas的数值运算默认会自动忽略NaN值,真正的原因是Col1列存储的是带千分位逗号的字符串格式,无法直接参与数值运算,按以下步骤处理即可:

  1. 先把Col1列的字符串转换为数值类型,自动保留NaN值
  2. 对转换后的数值做除以1000的运算
  3. 按需将结果格式化为你预期的带千分位逗号的展示格式

完整实现代码如下:

import pandas as pd
import numpy as np

# 步骤1:去掉Col1字符串中的千分位逗号,转换为数值类型,无法转换的内容自动设为NaN
df['Col1_numeric'] = pd.to_numeric(df['Col1'].str.replace(',', '', regex=False), errors='coerce')

# 步骤2:除以1000得到Col2的数值结果,NaN自动保留
df['Col2'] = df['Col1_numeric'] / 1000

# 步骤3(可选):如果需要Col2为和示例一致的带千分位逗号的字符串格式,执行以下代码
def format_col2_val(x):
    if pd.isna(x):
        return np.nan
    if x.is_integer():
        return f"{int(x):,}"
    return str(x)
df['Col2'] = df['Col2'].apply(format_col2_val)

# 删除中间转换列(不需要可省略)
df.drop('Col1_numeric', axis=1, inplace=True)

如果你不需要Col2带千分位逗号,只需要数值类型的结果,可以跳过第三步的格式化操作,直接用除以1000后的数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:15:03