bik*_*ser 2 python dataframe pandas
我有一个包含九列的每日时间序列数据帧.每列代表不同方法的测量值.我想仅在有两个以上的测量值时计算每日平均值,否则想要指定为NaN.如何用pandas dataframe做到这一点?
假设我的df看起来像:
0 1 2 3 4 5 6 7 8
2000-02-25 NaN 0.22 0.54 NaN NaN NaN NaN NaN NaN
2000-02-26 0.57 NaN 0.91 0.21 NaN 0.22 NaN 0.51 NaN
2000-02-27 0.10 0.14 0.09 NaN 0.17 NaN 0.05 NaN NaN
2000-02-28 NaN NaN NaN NaN NaN NaN NaN NaN 0.14
2000-02-29 0.82 NaN 0.75 NaN NaN NaN 0.14 NaN NaN
Run Code Online (Sandbox Code Playgroud)
我期待的平均价值如下:
0
2000-02-25 NaN
2000-02-26 0.48
2000-02-27 0.11
2000-02-28 NaN
2000-02-29 0.57
Run Code Online (Sandbox Code Playgroud)
使用where了NaN由创造条件S值DataFrame.count的数量与排除NaNS和通过比较Series.gt(>):
s = df.where(df.count(axis=1).gt(2)).mean(axis=1)
#alternative soluton with changed order
#s = df.mean(axis=1).where(df.count(axis=1).gt(2))
print (s)
2000-02-25 NaN
2000-02-26 0.484
2000-02-27 0.110
2000-02-28 NaN
2000-02-29 0.570
dtype: float64
Run Code Online (Sandbox Code Playgroud)