我有两个数据帧,每个数据帧包含一个主题水平数据(df1),一个数据帧具有针对每个主题的多个测量值(df1)。
我想使用df1作为查找表,它告诉我如何对df2中的值进行分组(nb:每一行都描述了对主题进行分组的不同方法)。我将遍历df2的每一行,并为df1的每一行中描述的组计算一些统计信息(现在说平均值)。
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'A': list('abca'), 'B': list('bccb'), 'C': list('bcca')})
df2 = pd.DataFrame(np.random.randint(0,100,size=(100, 9)), columns=list(['A-1','A-2', 'A-3','B-1','B-2', 'B-3','C-1','C-2', 'C-3']))
print(df1)
A B C
0 a b b
1 b c c
2 c c c
3 a b a
困难在于,对于每个受试者(A,B或C),在此示例中可能有1个或多个测量值,而它们都有3个测量值。我需要做的是将df2中的列名的第一部分与df1中的列名进行匹配。
A-1 A-2 A-3 B-1 B-2 B-3 C-1 C-2 C-3
0 99 81 17 3 75 50 24 71 3
假设我是故意的。我想产生这样的输出。
df1_row df2_row mean-a mean-b mean-c
0 0 65.67 37.67 NA
1 0 NA 65.67 37.67
2 0 NA NA 47
3 0 49.17 42.67 NA