我不确定如何计算给定特定行的列的平均值。 我需要按十年计算Mkt-RF列的平均值,如193001到193912的平均值,依此类推。我需要在2016年之前完成这个任务。
还有什么方法可以将结果放入自己的新数据框中吗?十年(1920,1930)在一列中,每十年的平均值在另一列?
答案 0 :(得分:0)
我认为3
的第一列str[:3]
字符需要groupby
df = df['Mkt-RF'].groupby(df['Unnamed:0'].str[:3]).mean()
mean
df = pd.DataFrame({'Unnamed:0':['192607','192608','193609','193610','193611'],
'Mkt-RF':[4,5,6,7,5]})
print (df)
Mkt-RF Unnamed:0
0 4 192607
1 5 192608
2 6 193609
3 7 193610
4 5 193611
#rename column
df = df.rename(columns={'Unnamed:0':'YEARMONTH'})
df = df['Mkt-RF'].groupby(df.YEARMONTH.str[:3]).mean().rename('MEAN').reset_index()
df.YEARMONTH = (df.YEARMONTH + '0').astype(int)
print (df)
YEARMONTH MEAN
0 1920 4.5
1 1930 6.0
样品:
groupby
另一种解决方案是将to_datetime
和10
转换为year
楼层除以df = df.rename(columns={'Unnamed:0':'YEARMONTH'})
df.YEARMONTH = pd.to_datetime(df.YEARMONTH, format='%Y%m')
df = df['Mkt-RF'].groupby(df.YEARMONTH.dt.year // 10).mean().rename('MEAN').reset_index()
df.YEARMONTH = df.YEARMONTH *10
print (df)
YEARMONTH MEAN
0 1920 4.5
1 1930 6.0
:
1.2.3.4 Clinic
12.13.14.15 Registration
78.79.251.123 Somwhere else with spaces