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

Python Pandas:如何根据另一列的条件合并DataFrame列

根据条件合并DataFrame列的实现方法

给定如下DataFrame:

value,combined,value_shifted,Sequence_shifted,long,short
12834.0,2.0,12836.0,3.0,2.0,-2.0
12813.0,-2.0,12781.0,-3.0,-32.0,32.0
12830.0,2.0,12831.0,3.0,1.0,-1.0
12809.0,-2.0,12803.0,-3.0,-6.0,6.0
12822.0,2.0,12805.0,3.0,-17.0,17.0
12800.0,-2.0,12807.0,-3.0,7.0,-7.0
12773.0,2.0,12772.0,3.0,-1.0,1.0
12786.0,-2.0,12787.0,1.0,1.0,-1.0
12790.0,2.0,12784.0,3.0,-6.0,6.0

需要实现:当combined列值为2时,取long列的值;当combined列值为-2时,取short列的值,生成新列calc。

方法1:使用numpy.where(最简洁)

import pandas as pd
import numpy as np

# 加载数据(假设已读取为DataFrame对象df)
df = pd.read_csv("your_data_source.csv")

# 按条件生成calc列
df['calc'] = np.where(df['combined'] == 2, df['long'], df['short'])

# 可选:移除不需要的long、short列
df = df.drop(['long', 'short'], axis=1)

方法2:使用df.loc索引赋值

import pandas as pd

df = pd.read_csv("your_data_source.csv")

# 初始化calc列
df['calc'] = 0.0

# 按条件分别赋值
df.loc[df['combined'] == 2, 'calc'] = df['long']
df.loc[df['combined'] == -2, 'calc'] = df['short']

# 移除原long、short列
df = df.drop(['long', 'short'], axis=1)

执行后正确结果

value,combined,value_shifted,Sequence_shifted,calc
12834.0,2.0,12836.0,3.0,2.0
12813.0,-2.0,12781.0,-3.0,32.0
12830.0,2.0,12831.0,3.0,1.0
12809.0,-2.0,12803.0,-3.0,6.0
12822.0,2.0,12805.0,3.0,-17.0
12800.0,-2.0,12807.0,-3.0,-7.0
12773.0,2.0,12772.0,3.0,-1.0
12786.0,-2.0,12787.0,1.0,-1.0
12790.0,2.0,12784.0,3.0,-6.0

注:你提供的期望结果中部分值(如第6行的-1.0、第8行的-6.0、第9行的20.0)与原数据的逻辑规则不符,上述结果是严格按照给定规则生成的正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:06:32