我有一只熊猫系列:
0 1
1 5
2 20
3 -1
让我们说我想在每两个元素上应用mean()
,所以我得到这样的东西:
0 3.0
1 9.5
有优雅的方法吗?
答案 0 :(得分:3)
您可以使用index
k=2
除以k = 2
print (s.index // k)
Int64Index([0, 0, 1, 1], dtype='int64')
print (s.groupby([s.index // k]).mean())
name
0 3.0
1 9.5
:
error: ‘struct tty_driver’ has no member named ‘write’
((my_tty->driver)->write) (my_tty,0,str,strlen(str));
答案 1 :(得分:1)
如果你在大型系列中多次使用它,你会想要考虑快速的方法。该解决方案使用所有numpy功能,并且速度很快。
使用reshape
并构建新的pd.Series
考虑pd.Series
s
s = pd.Series([1, 5, 20, -1])
广义函数
def mean_k(s, k):
pad = (k - s.shape[0] % k) % k
nan = np.repeat(np.nan, pad)
val = np.concatenate([s.values, nan])
return pd.Series(np.nanmean(val.reshape(-1, k), axis=1))
<强> 示范 强>
mean_k(s, 2)
0 3.0
1 9.5
dtype: float64
mean_k(s, 3)
0 8.666667
1 -1.000000
dtype: float64
答案 2 :(得分:1)
你可以这样做:
(s.iloc[::2].values + s.iloc[1::2])/2
如果你想要你也可以在之后重置索引,所以你有0,1作为索引,使用:
((s.iloc[::2].values + s.iloc[1::2])/2).reset_index(drop=True)