【发布时间】:2020-11-19 06:42:52
【问题描述】:
这是对我之前的 questions 的跟进,但我知道需要添加特定行的选择以应用更改的值。
np.random.seed(0)
rng = pd.date_range('2020-09-24', periods=20, freq='0.2H')
df = pd.DataFrame({ 'Date': rng, 'Val': np.random.randn(len(rng)), 'Dist' :np.random.randn(len(rng)), 'Variant' : ["Red", "Blue", "Blue", "Yellow","Blue", "Blue", "Yellow", "Blue", "Yellow","Blue", "Red", "Red", "Red", "Red","Blue", "Blue", "Yellow","Red", "Yellow", "Yellow"]})
df.Dist[df.Dist<=-0.6] = np.nan
df.Val[df.Val<=-0.5] = np.nan
我得到了这个很棒的解决方案:
cols = ['Val','Dist']
df[cols] = df[cols].fillna(df.groupby(df.Date.dt.floor('H'))
[cols].transform('median')
)
但现在我不知道如何做到这一点,以便在列中的所有值中计算每小时的中位数,但仅用于在变量列中填充红色的值? 同样,这是整个每个 Dist 和 Val 列的中位数。 这样可以使 NaN 值保留在黄色和蓝色行中。
【问题讨论】: