Pandas 平均日期
我有一个太大的数据框,包含x,y,年,月,我如何创建一个新的列,以月平均天数为单位 输入 我试着每月使用条件if,但是代码太大了,还有其他方法吗? 预期产量Pandas 平均日期,pandas,dataframe,pandas-groupby,Pandas,Dataframe,Pandas Groupby,我有一个太大的数据框,包含x,y,年,月,我如何创建一个新的列,以月平均天数为单位 输入 我试着每月使用条件if,但是代码太大了,还有其他方法吗? 预期产量 X/Y/YEAR/MONTH/DAYS 1/2/1990/2/14 1/2/1990/5/15.5 1/2/1990/6/ 4/8/2020/1/15.5 4/8/2020/2/14 4/8/2020/3/15.5 4/8/2020/4/15 3/7/2020/8/15.5 您可以创建日期序列d,并将MonthEnd与dt.day一起使用
X/Y/YEAR/MONTH/DAYS
1/2/1990/2/14
1/2/1990/5/15.5
1/2/1990/6/
4/8/2020/1/15.5
4/8/2020/2/14
4/8/2020/3/15.5
4/8/2020/4/15
3/7/2020/8/15.5
您可以创建日期序列
d
,并将MonthEnd
与dt.day
一起使用,然后除以2
:
from pandas.tseries.offsets import MonthEnd
d = pd.to_datetime(df['YEAR'].astype(str) + '-' + df['MONTH'].astype(str) + '-01')
df['Days'] = (d + MonthEnd(1)).dt.day / 2
df
Out[1]:
X Y YEAR MONTH Days
0 1 2 1990 2 14.0
1 1 2 1990 5 15.5
2 1 2 1990 6 15.0
3 4 8 2020 1 15.5
4 4 8 2020 2 14.5
5 4 8 2020 3 15.5
6 4 8 2020 4 15.0
7 3 7 2020 8 15.5
似乎您正在查找
groupby().mean()
。您的预期输出是什么?预期输出是每个月的平均天数,例如1-->15…..您如何获得前两行中的14天或15.5天?X和Y代表什么?X和Y是坐标,其想法是根据月数估计N2020
是闰年,因此2月应该是29/2=14.5
。请看我的输出。
df.groupby(['MONTH']).mean().reset_index()
from pandas.tseries.offsets import MonthEnd
d = pd.to_datetime(df['YEAR'].astype(str) + '-' + df['MONTH'].astype(str) + '-01')
df['Days'] = (d + MonthEnd(1)).dt.day / 2
df
Out[1]:
X Y YEAR MONTH Days
0 1 2 1990 2 14.0
1 1 2 1990 5 15.5
2 1 2 1990 6 15.0
3 4 8 2020 1 15.5
4 4 8 2020 2 14.5
5 4 8 2020 3 15.5
6 4 8 2020 4 15.0
7 3 7 2020 8 15.5