【问题标题】:Creating a new column based on value of existing column根据现有列的值创建新列
【发布时间】:2018-05-16 08:03:04
【问题描述】:

我想创建一个新列(即 Winning_Time),如下表所示。 Match_state (Winning) 的所有 Time_diff 将存储在新列 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

非常感谢您的建议。

【问题讨论】:

    标签: python python-3.x pandas numpy series


    【解决方案1】:

    你可以使用numpy.where:

    df['Winning_Time'] = np.where(df['Match_state'] == 'Winning', df['Time_diff'], np.nan)
    

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

    【讨论】:

    • 我只是碰巧发现了。反正。非常感谢@jpp
    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多