基于现有列的值创建新列Winning_Time的实现方法
解决方案:创建Winning_Time列(基于Match_state条件)
假设你是用Pandas处理这份表格数据,这里有两种简单直接的方法来实现你的需求:
方法1:使用numpy.where快速赋值
这是最简洁的方式,一行代码就能完成条件判断和赋值:
import pandas as pd import numpy as np # 假设你的数据框名为df df['Winning_Time'] = np.where(df['Match_state'] == 'Winning', df['Time_diff'], np.nan)
解释:
np.where(条件, 满足条件时的值, 不满足条件时的值):当Match_state等于Winning时,取对应行的Time_diff;否则填充NaN。- 如果想填充0而不是
NaN,把np.nan换成0即可。
方法2:使用df.loc精准定位赋值
这种方法更直观,适合需要分步处理的场景:
# 先初始化新列为NaN df['Winning_Time'] = np.nan # 定位Match_state为Winning的行,赋值Time_diff df.loc[df['Match_state'] == 'Winning', 'Winning_Time'] = df['Time_diff']
解释:
- 先给新列
Winning_Time全部填充NaN,再通过loc筛选出符合条件的行,将对应Time_diff的值赋值过去。 - 同样,如果要填充0,把初始值换成
0就行。
验证结果
运行上述代码后,你的数据框就会生成符合要求的Winning_Time列,效果和你给出的示例表格完全一致。
内容的提问来源于stack exchange,提问作者Zephyr
相关产品推荐
相关产品推荐

