Python 基于现有列的值创建新列

Python 基于现有列的值创建新列,python,python-3.x,pandas,numpy,series,Python,Python 3.x,Pandas,Numpy,Series,我想创建一个新列(即Winning_Time),如下表所示。比赛状态(获胜)的所有时间差将存储在新列获胜时间中。其余行将用NaN或零填充。 我该怎么做 gsm_id Goal_Flag Union_Level Team_SR Match_state Time_diff Wining_Time 2462796 First goal Scored Burnley Winning 0 days 00:23:15.00 0 days 00:23:15

我想创建一个新列(即Winning_Time),如下表所示。比赛状态(获胜)的所有时间差将存储在新列获胜时间中。其余行将用NaN或零填充。 我该怎么做

gsm_id  Goal_Flag   Union_Level Team_SR Match_state   Time_diff           Wining_Time
2462796 First goal  Scored      Burnley  Winning    0 days 00:23:15.00   0 days 00:23:15.00
2462796 First goal  Conceded    Chelsea  Losing     0 days 00:23:15.00   NaN               
2462796 Other goals Scored      Burnley  Winning    0 days 00:15:20.00   0 days 00:15:20.00
2462796 Other goals Conceded    Chelsea  Losing     0 days 00:15:20.00   NaN
2462796 Other goals Scored      Burnley  Winning    0 days 00:03:34.00   0 days 00:03:34.00
2462796 Other goals Conceded    Chelsea  Losing     0 days 00:03:34.00   NaN
2462796 Other goals Scored      Chelsea  Losing     0 days 00:25:59.00   NaN
2462796 Other goals Conceded    Burnley  Winning    0 days 00:25:59.00   0 days 25:59.00
2462796 Last goal   Scored      Chelsea  Losing     0 days 00:19:11.00   NaN
2462796 Last goal   Conceded    Burnley  Winning    0 days 00:19:11.00   0 days 00:19:11.00
2462795 First goal  Scored      City     Winning    0 days 01:09:15.00   0 days 01:09:15.00 
2462795 First goal  Conceded    Brighton Losing     0 days 01:09:15.00   NaN
2462795 Last goal   Scored      City     Winning    0 days 00:05:21.00   0 days 00:05:21.00
2462795 Last goal   Conceded    Brighton Losing     0 days 00:05:21.00   NaN
非常感谢您的建议。

您可以使用:

在这里,
numpy.where
就像一个向量化的if/else语句。

您可以使用:


这里,
numpy.where
就像一个向量化的if/else语句。

我碰巧发现了。无论如何非常感谢@jppi碰巧发现了这一点。无论如何非常感谢@jpp
df['Winning_Time'] = np.where(df['Match_state'] == 'Winning', df['Time_diff'], np.nan)