Python 熊猫-取同一年的平均值,但该年分为四个季度

Python 熊猫-取同一年的平均值,但该年分为四个季度,python,pandas,Python,Pandas,我使用的数据集将年份划分为季度。我想知道每个国家每年的平均教育率 在我看来,它看起来像:如果年份是1999.xx,那么意味着(educrate) 数据如下所示: Country Year Educ Rate USA 1999.00 95 USA 1999.25 96 USA 1999.50 97 USA 1999.75 95 USA 2000.00 99 Argentina

我使用的数据集将年份划分为季度。我想知道每个国家每年的平均教育率

在我看来,它看起来像:如果年份是1999.xx,那么意味着(educrate)

数据如下所示:

Country     Year      Educ Rate
USA         1999.00   95
USA         1999.25   96
USA         1999.50   97
USA         1999.75   95
USA         2000.00   99
Argentina   1999.00   88
Argentina   1999.25   86
Argentina   1999.50   88
Argentina   1999.75   89
Argentina   2000.00   90
我将非常感谢任何提示/建议


谢谢。

您需要使用“.”进行拆分,然后按年份和国家分组

    tmp = pd.DataFrame({'a': [1,1,2,2,1,1,2,2,1,2],
     'b': ['2015.00','2015.00', '2015.25', '2015.50', '2016.00','2016.00', '2016.25', '2016.50',
           '2017.00', '2017.00'],
     'c': [2,3,4,5,7,3,4,5,3,2]})

    tmp['year'] = tmp['b'].apply(lambda x: x.split('.')[0])
    tmp['mean'] = tmp.groupby(['a', 'year'])['c'].transform('mean')

一种方法是使用
.apply(math.floor)
将年份取整。在此之后,您可以按国家和年份进行分组,并根据平均值进行汇总

df=pd.DataFrame(数据=['USA',1999.0,95],
[‘美国’,1999.2596],
[《美国》,1999年5月,1997年],
[《美国》,1999.75,95],
['USA',2000.0,99],
[《阿根廷》,1999.0,88],
[《阿根廷》,1999.2586],
[《阿根廷》,1999.5,88],
[《阿根廷》,1999.75,89],
[《阿根廷》,2000.0,90],
],
列=[‘国家’、‘年份’、‘教育率’])
#整年下来
df['Year']=(df['Year'])。应用(数学地板)
#总平均数
df_agg=df.groupby(['Country','Year']).agg('mean'))
将提供:

# print(df_agg)
                Educ_rate
Country   Year           
Argentina 1999      87.75
          2000      90.00
USA       1999      95.75
          2000      99.00

您提供的图像是黑色的。请将样本数据集发布为文本而非图像。您可能需要研究
pandas
聚合数据。谢谢!我快到了。第一行,以“tmp['year']=…”开始。但第二行表示“DataError:没有要聚合的数值类型”。我已经更改了您的代码以使用我的变量。看起来是这样的:df['mean']=df.groupby(['Country','Year'])['educ'].transform('mean')'educ'变量的数据类型是什么?educ的数据类型是“Object”。然后你应该在代码后面加一行,这样运行
df['educ']=df['educ'].astype(float)
我真的感谢你的帮助!我有这个:df['educ']=df['educ'].astype(float)df['Year']=df['Year'].apply(lambda x:x.split('.)[0])df['mean']=df.groupby(['Country',Year'])['educ.transform('mean')返回df this给出的值:“ValueError:无法将字符串转换为float:'NA'”你知道为什么吗?谢谢!这很有用——唯一的一点是它说:“TypeError:必须是实数,而不是str”。我试着把它转换成int或float,但都没有用。有什么建议吗?请知道:数据精确到小数点后15位。这有影响吗?小数点的精度应该无关紧要。如果无法访问数据,这是很困难的,但通常情况下,像您所描述的问题都是由于不正确的NA值导致的,无法很好地转换。例如:
df['Year']=df['Year'].replace(“na”,np.NaN)
df['Year']=df['Year'].astype('float')