Python 如何替换NA';s为每个国家计算平均值时的变量平均值';s数据

Python 如何替换NA';s为每个国家计算平均值时的变量平均值';s数据,python,Python,我需要帮助用python编写代码,用变量的平均值替换NA(自杀率是变量,每个国家有18年的数据(国家是另一个变量))。因此,我想用17年来特定国家自杀率的平均值来代替第18年的NA。例如,沙特阿拉伯18年中有一年的数据缺失。我想找出17年自杀率的平均值,用那一年取代NA。我需要让代码循环以替换每个变量的NA。所有变量都是自杀率或死亡率。图中显示了一个高亮显示的单元格,它是缺少数据的单元格的一个示例。每个国家都有1990年至2018年18年的数据。 假设您有以下数据帧: ID Year

我需要帮助用python编写代码,用变量的平均值替换NA(自杀率是变量,每个国家有18年的数据(国家是另一个变量))。因此,我想用17年来特定国家自杀率的平均值来代替第18年的NA。例如,沙特阿拉伯18年中有一年的数据缺失。我想找出17年自杀率的平均值,用那一年取代NA。我需要让代码循环以替换每个变量的NA。所有变量都是自杀率或死亡率。图中显示了一个高亮显示的单元格,它是缺少数据的单元格的一个示例。每个国家都有1990年至2018年18年的数据。

假设您有以下数据帧:

   ID  Year       Entity  Variable_1  Variable_2
0   0  2000       Canada       120.0       600.0
1   1  2001       Canada       100.0       700.0
2   2  2002       Canada         NaN       800.0
3   3  2000  Switzerland       300.0       200.0
4   4  2001  Switzerland       400.0         NaN
5   5  2002  Switzerland       500.0       400.0
您可以创建另一个数据框,其中包含每个国家和变量的平均值:

means = df.groupby('Entity').mean()
for country in df.Entity:

for col in df.drop(columns = ['ID','Year','Entity']).columns:
    
    df.loc[(df.Entity == country) & (df[col].isnull()),col] = means.loc[country,col]
然后,您可以循环遍历每个国家和每个变量,并将缺少的值设置为该国家和变量的适当平均值:

means = df.groupby('Entity').mean()
for country in df.Entity:

for col in df.drop(columns = ['ID','Year','Entity']).columns:
    
    df.loc[(df.Entity == country) & (df[col].isnull()),col] = means.loc[country,col]
结果:

   ID  Year       Entity  Variable_1  Variable_2
0   0  2000       Canada       120.0       600.0
1   1  2001       Canada       100.0       700.0
2   2  2002       Canada       110.0       800.0
3   3  2000  Switzerland       300.0       200.0
4   4  2001  Switzerland       400.0       300.0
5   5  2002  Switzerland       500.0       400.0

粘贴到目前为止的python代码。。。我们懒得从头开始写