DataFrame在 Python 中考虑以下内容:
import pandas as pd
df = pd.DataFrame({'id':[0]*3+[1]*3,'y':np.random.randn(6),'x':np.random.randn(6)})
这使
id y x
0 0 0.721757 1.595646
1 0 0.359601 1.128473
2 0 1.134922 2.317929
3 1 0.290152 -1.901336
4 1 0.128742 0.982683
5 1 0.556914 0.745208
请注意,y和x是根据 分组的id。我想创建以下内容DataFrame
id y x y_md x_md
0 0 0.721757 1.595646 -0.017003 -0.085037
1 0 0.359601 1.128473 -0.379159 -0.552209
2 0 1.134922 2.317929 0.396162 0.637246
3 1 0.290152 -1.901336 -0.035117 -1.843521
4 1 0.128742 0.982683 -0.196527 1.040498
5 1 0.556914 0.745208 0.231644 0.803023
在哪里
y_md包含与其组均值 ( id= 0& 1)的偏差值
x_md包含与其组均值 ( id= 0& 1)的偏差值
我想到的是
df_g = df.groupby('id')
yy = pd.Series( df['y'].values - df_g['y'].mean().repeat(3).values )
xx = pd.Series( df['x'].values - df_g['x'].mean().repeat(3).values )
pd.concat([df,yy.rename('y_md'), xx.rename('x_md')],axis=1)
但它看起来不太好。我想知道是否有一个优雅的 one liner 或类似的结果相同?我将不胜感激你的帮助。
www说
一只萌萌小番薯
慕码人8056858
随时随地看视频慕课网APP
相关分类