Решения для заполненного числа всех значений столбца value
:
mask = df['interval'] < 300
df.loc[mask, 'value'] = df.loc[mask, 'value'].fillna(df['value'].mean())
Или:
mask1 = (df['interval'] < 300) & df['value'].isna()
df.loc[mask1, 'value'] = df['value'].mean()
Образец :
print (df)
value interval
time
2019-09-26 00:02:00 NaN 60.0
2019-09-26 00:03:00 NaN 400.0
2019-09-26 00:04:00 2.0 60.0
2019-09-26 00:05:00 3.0 60.0
2019-09-26 00:06:00 10.0 600.0
mask1 = (df['interval'] < 300) & df['value'].isna()
df.loc[mask1, 'value'] = df['value'].mean()
print (df)
value interval
time
2019-09-26 00:02:00 5.0 60.0
2019-09-26 00:03:00 NaN 400.0
2019-09-26 00:04:00 2.0 60.0
2019-09-26 00:05:00 3.0 60.0
2019-09-26 00:06:00 10.0 600.0
Решения для заполненных средних только по строкам, где interval < 300
:
mask = df['interval'] < 300
df.loc[mask, 'value'] = df.loc[mask, 'value'].fillna(df.loc[mask, 'value'].mean())
Или:
mask1 = (df['interval'] < 300) & df['value'].isna()
df.loc[mask1, 'value'] = df.loc[(df['interval'] < 300), 'value'].mean()
print (df)
value interval
time
2019-09-26 00:02:00 2.5 60.0
2019-09-26 00:03:00 NaN 400.0
2019-09-26 00:04:00 2.0 60.0
2019-09-26 00:05:00 3.0 60.0
2019-09-26 00:06:00 10.0 600.0