Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算groupby上数据集多列的z分数,并在不使用循环的情况下转换为pandas中的原始形状_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 计算groupby上数据集多列的z分数,并在不使用循环的情况下转换为pandas中的原始形状

Python 计算groupby上数据集多列的z分数,并在不使用循环的情况下转换为pandas中的原始形状,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据框 df = pd.DataFrame([["A",1,98,56,61], ["B",1,99,54,36], ["C",1,97,32,83],["B",1,96,31,90], ["C",1,45,32,12], ["A",1,67,33,55], ["C",1,54,65,73], ["A",1,34,84,98],

我有一个数据框

df = pd.DataFrame([["A",1,98,56,61], ["B",1,99,54,36], ["C",1,97,32,83],["B",1,96,31,90], ["C",1,45,32,12], ["A",1,67,33,55], ["C",1,54,65,73], ["A",1,34,84,98], ["B",1,76,12,99]], columns=["id","date","c1","c2","c3"])
需要使用“id”上的groupby计算列“c1”、“c2”、“c3”的Z分数,并在不使用循环的情况下将其转换为原始形式

预期输出:

df_out = pd.DataFrame([["A",1,1.21179,-0.079921,-0.543442], ["B",1,0.84893,1.26172,-1.401826], ["C",1,1.395551,-0.707107,0.860437],["B",1,0.55507,-0.077644,0.539164], ["C",1,-0.89609,-0.707107,-1.402194], ["A",1,0.025511,-1.182827,-0.858988], ["C",1,-0.49946,1.414214,0.541757], ["A",1,-1.237301,1.262748,1.40243], ["B",1,-1.404,-1.184075,0.862662]], columns=["id","date","c1","c2","c3"])
如何操作?

与以下部件一起使用:

from scipy.stats import zscore

df = df[['id','date']].join(df.groupby(['id','date']).transform(zscore))
print (df)
  id  date        c1        c2        c3
0  A     1  1.211790 -0.079921 -0.543442
1  B     1  0.848930  1.261720 -1.401826
2  C     1  1.395551 -0.707107  0.860437
3  B     1  0.555070 -0.077644  0.539164
4  C     1 -0.896090 -0.707107 -1.402194
5  A     1  0.025511 -1.182827 -0.858988
6  C     1 -0.499460  1.414214  0.541757
7  A     1 -1.237301  1.262748  1.402430
8  B     1 -1.404000 -1.184075  0.862662