Python 如何根据两个不同列的值在一列中填充NaN

Python 如何根据两个不同列的值在一列中填充NaN,python,pandas,data-analysis,Python,Pandas,Data Analysis,我有一个三列的数据框。其中两个是组和子组,第三个是值。我在“值”列中有一些NaN值。我需要根据组和子组,通过中值计算它们 我用双索引和目标列的中位数制作了一个透视表。但我不明白如何获取这些值并将它们放入原始数据帧中 将熊猫作为pd导入 df=pd.DataFrame(数据帧=[ [1,1,'A',1], [2,1,'A',3], [3,3,'B',8], [4,2,'C',1], [5,3,'A',3], [6,2,'C',6], [7,1,'B',2], [8,1,'C',3], [9,2,'

我有一个三列的数据框。其中两个是组和子组,第三个是值。我在“值”列中有一些NaN值。我需要根据组和子组,通过中值计算它们

我用双索引和目标列的中位数制作了一个透视表。但我不明白如何获取这些值并将它们放入原始数据帧中

将熊猫作为pd导入
df=pd.DataFrame(数据帧=[
[1,1,'A',1],
[2,1,'A',3],
[3,3,'B',8],
[4,2,'C',1],
[5,3,'A',3],
[6,2,'C',6],
[7,1,'B',2],
[8,1,'C',3],
[9,2,'A',7],
[10,3,'C',4],
[11,2,'B',6],
[12,1,'A'],
[13,1,'C'],
[14,2,'B'],
[15,3,'A']],列=['id','group','subgroup','value'])
打印(df)
id组子组值
0 1 A 1
1 2 1 A 3
2 3 B 8
3 4 2 C 1
4 5 3 A 3
5 6 2 C 6
671b2
7 8 1 C3
8 9 2 A 7
9103C4
10112B6
11 12 1阿南
12 13 1 C南
13 14 2 B南
14 15 3阿南
df_struct=df.pivot_表(索引=['group','subgroup'],value='value',aggfunc='median')
打印(df_结构)
价值
群子群
1A2.0
B 2.0
C3.0
2 A 7.0
B 6.0
C 3.5
3 A 3.0
B 8.0
C4.0

感谢您的帮助

使用
pandas.DataFrame.groupby.transform
然后
fillna

    id  group subgroup  value
0    1      1        A    1.0
1    2      1        A    NaN # < Value with nan
2    3      3        B    8.0
3    4      2        C    1.0
4    5      3        A    3.0
5    6      2        C    6.0
6    7      1        B    2.0
7    8      1        C    3.0
8    9      2        A    7.0
9   10      3        C    4.0
10  11      2        B    6.0

df['value'] = df['value'].fillna(df.groupby(['group', 'subgroup'])['value'].transform('median'))
print(df)
    id  group subgroup  value
0    1      1        A    1.0
1    2      1        A    1.0
2    3      3        B    8.0
3    4      2        C    1.0
4    5      3        A    3.0
5    6      2        C    6.0
6    7      1        B    2.0
7    8      1        C    3.0
8    9      2        A    7.0
9   10      3        C    4.0
10  11      2        B    6.0