首页 > 解决方案 > 如何根据条件在列的特定范围行中插入值。熊猫

问题描述

我正在处理一个数据框,它有一个名为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是从159,则将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

标签: pythonpandasdataframe

解决方案


我将该过程分为两个步骤,但您也可以将两者合并为一行。

首先检查 match_id 是否在指定范围内,然后根据条件用所需的值覆盖。

df['season'] = df['match_id'].isin(range(1,60)
df['season'] = df['season'].apply(lambda x: 2017 if x else np.nan)

推荐阅读