如何将 YYYYMM 转换为没有日期的 YYYY-MM 日期时间格式?
How to convert YYYYMM to YYYY-MM datetime format without day?
我有两个具有每月频率的数据集。对于其中之一,df
,我必须使用以下代码汇总一些数据以将其从每日转换为每月:
df_grouped=df.groupby([df.index.to_period('M'),'City ID']).agg({'Estimated Population':'mean','Estimated Population_2019':'mean','Confirmed Rate':['mean','std'],'Death Rate':['mean','std'],'New Confirmed':'sum','New Deaths':'sum'})
df_grouped.index.rename(['Month','City ID'],inplace=True)
进行这些更改后,我的日期格式变为 YYYY-MM
,例如:
2020-01
2020-02
...
2021-07
我的另一个数据集 df2
的日期格式为 YYYMM
,因此我使用以下代码对其进行转换:
df2['DATE'] = pd.to_datetime(df2['DATE'],format='%Y%m')
我的新日期变成格式YYYY-MM-DD
,其中所有DD
变成01,如下:
2020-01-01
2020-02-01
...
2021-07-01
如何将 df2
日期从 YYYY-MM-DD
转换为 YYYY-MM
?
我在想,也许有一种方法可以直接从 YYYYMM
转换为 YYYY-MM
?
您可以使用
df2['DATE'] = pd.to_datetime(df2['DATE'],format='%Y%m').dt.strftime('%Y-%m')
# or
df['date'] = df['date'].astype(str).str.replace(r'(\d{4})(\d{2})', r'-', regex=True)
使用:
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-01']})
pd.to_datetime(df['date']).dt.to_period('M')
输出:
将您的列转换为 PeriodIndex
:
>>> pd.PeriodIndex(df2['DATE'], freq='M')
PeriodIndex(['2020-09', '2020-10', '2020-11', '2020-12', '2021-01', '2021-02'],
dtype='period[M]', name='DATE')
输入数据:
dti = pd.date_range('2020-9', '2021-3', freq='M')
df2 = pd.DataFrame({'DATE': dti.strftime('%Y%m')})
print(df2)
# Output
DATE
0 202009
1 202010
2 202011
3 202012
4 202101
5 202102
我有两个具有每月频率的数据集。对于其中之一,df
,我必须使用以下代码汇总一些数据以将其从每日转换为每月:
df_grouped=df.groupby([df.index.to_period('M'),'City ID']).agg({'Estimated Population':'mean','Estimated Population_2019':'mean','Confirmed Rate':['mean','std'],'Death Rate':['mean','std'],'New Confirmed':'sum','New Deaths':'sum'})
df_grouped.index.rename(['Month','City ID'],inplace=True)
进行这些更改后,我的日期格式变为 YYYY-MM
,例如:
2020-01
2020-02
...
2021-07
我的另一个数据集 df2
的日期格式为 YYYMM
,因此我使用以下代码对其进行转换:
df2['DATE'] = pd.to_datetime(df2['DATE'],format='%Y%m')
我的新日期变成格式YYYY-MM-DD
,其中所有DD
变成01,如下:
2020-01-01
2020-02-01
...
2021-07-01
如何将 df2
日期从 YYYY-MM-DD
转换为 YYYY-MM
?
我在想,也许有一种方法可以直接从 YYYYMM
转换为 YYYY-MM
?
您可以使用
df2['DATE'] = pd.to_datetime(df2['DATE'],format='%Y%m').dt.strftime('%Y-%m')
# or
df['date'] = df['date'].astype(str).str.replace(r'(\d{4})(\d{2})', r'-', regex=True)
使用:
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-01']})
pd.to_datetime(df['date']).dt.to_period('M')
输出:
将您的列转换为 PeriodIndex
:
>>> pd.PeriodIndex(df2['DATE'], freq='M')
PeriodIndex(['2020-09', '2020-10', '2020-11', '2020-12', '2021-01', '2021-02'],
dtype='period[M]', name='DATE')
输入数据:
dti = pd.date_range('2020-9', '2021-3', freq='M')
df2 = pd.DataFrame({'DATE': dti.strftime('%Y%m')})
print(df2)
# Output
DATE
0 202009
1 202010
2 202011
3 202012
4 202101
5 202102