python - 根据现有列的值创建新列
问题描述
我想创建一个新列(即 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
非常感谢您的建议。
解决方案
您可以使用numpy.where
:
df['Winning_Time'] = np.where(df['Match_state'] == 'Winning', df['Time_diff'], np.nan)
在这里,numpy.where
就像一个向量化的 if / else 语句。
推荐阅读
- python - 从服务器上的 PC 使用 Selenium Webdriver 调用 Python 脚本
- sql - Postgres 列“值”不存在
- php - 在悬停时播放视频仅适用于第一个元素
- r - R组合某些值超过其他值的行
- android - Firebase - 向现有节点添加新数据
- javascript - 拖放列表项
- java - 错误:无法找到或加载主类原因:java.lang.ClassNotFoundException
- installation - Anaconda-Spyder 在 Windows 10 中无法运行
- reactjs - 长按 Flatlist 中的项目时更改状态(功能组件)
- java - 使用操作栏和底部导航时片段重叠