python - 如何根据条件在列的特定范围行中插入值。熊猫
问题描述
我正在处理一个数据框,它有一个名为season的列(新创建,np.nan 填充),另一列是match_id,它的值如下: match 1 有match_id 1, match 2 有match_id 2, ... , match n有match_id n。它是板球(接近棒球)数据集,因此是逐个球的。1 场比赛最多有20+20轮(每轮有 6 个球)。所以match_id 1大约是从索引 0 到 240。然后match_id 2大约是从索引 241 到 480。数据是逐球(1 球 1 行)/逐场比赛(1 场比赛大约 240 行)/逐赛季(1 赛季大约 14160 行)。
我的条件是,如果match_id是从1到59,则将2017放在这些季节列行中。
在我的数据集中match_id和其他列预先存在。我创建了 np.nan 列season,现在我想填充它。
我的数据看起来像,
In[]: df_raw.head(6)
out[]:
season match_id inning batting_team bowling_team over ball
0 NaN 1 1 Sunrisers Hyderabad Royal Challengers Bangalore 1 1
1 NaN 1 1 Sunrisers Hyderabad Royal Challengers Bangalore 1 2
2 NaN 1 1 Sunrisers Hyderabad Royal Challengers Bangalore 1 3
3 NaN 1 1 Sunrisers Hyderabad Royal Challengers Bangalore 1 4
4 NaN 1 1 Sunrisers Hyderabad Royal Challengers Bangalore 1 5
5 NaN 1 1 Sunrisers Hyderabad Royal Challengers Bangalore 1 6
解决方案
我将该过程分为两个步骤,但您也可以将两者合并为一行。
首先检查 match_id 是否在指定范围内,然后根据条件用所需的值覆盖。
df['season'] = df['match_id'].isin(range(1,60)
df['season'] = df['season'].apply(lambda x: 2017 if x else np.nan)
推荐阅读
- windows - 从 Windows 命名管道读取/写入
- c# - 如何使用 Codedom 验证字段?
- javascript - 如何根据子表样式可见性隐藏父表
- angular - 无法从 firebase 实时数据库中获取键值
- c - 有符号类型是否假设为 32 位?
- c - 获取输入并将其打印到窗口的简单方法
- makefile - 如何使 Makefile 回显以使用`/bin/echo -e`?
- qt - 即使我按下 Key_F10 或 Key_F11 也会实现 Qt::Key_F9 案例
- loops - Fortran:带有实型参数的 do-loop
- sql - SQL Server 临时表检查性能