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

如何根据Pandas DataFrame中amount列正负为country列赋值

Pandas条件赋值解决方案

针对需求,这里提供两种常用的实现方式:

方法一:使用numpy.where简洁处理

np.where可通过一次判断完成条件赋值,代码简洁高效:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({
    'N': [0, 1],
    'amount': [-15678, 3475],
    'country': [np.nan, np.nan],
    'codeA': ['CH', 'POL'],
    'codeB': ['US', 'FR']
})

# 核心逻辑:amount为负取codeA,为正取codeB
df['country'] = np.where(df['amount'] < 0, df['codeA'], df['codeB'])

方法二:使用pd.DataFrame.loc逐条件赋值

这种方式逻辑更直观,适合分步理解条件筛选与赋值:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({
    'N': [0, 1],
    'amount': [-15678, 3475],
    'country': [np.nan, np.nan],
    'codeA': ['CH', 'POL'],
    'codeB': ['US', 'FR']
})

# 处理amount为负的情况:将codeA赋值给country
df.loc[df['amount'] < 0, 'country'] = df.loc[df['amount'] < 0, 'codeA']
# 处理amount为正的情况:将codeB赋值给country
df.loc[df['amount'] > 0, 'country'] = df.loc[df['amount'] > 0, 'codeB']

处理后结果

执行上述任意一种方法后,DataFrame会变为:

N  amount country codeA codeB
0  0  -15678      CH    CH    US
1  1    3475      FR   POL    FR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:15:00