我有一个Excel文件,该文件可以根据时间正确推断出datetime列,而我不需要。我需要做的是创建一个从datetime列派生的month,quarter,year和year_quarter列。但是,除了获得我在先前的迭代中成功获得的结果之外,我在每一列的值中得到一个奇数“ .0”。
基于过去的简单功能,我过去做到这一点没有任何麻烦:
def add_date_periods(df):
#df['ddate'] = pd.to_datetime(df['ddate'])
df['ddate'] = df['ddate'].dt.date
df['dyear'] = (df['ddate'].dt.year).apply(str)
df['dqtr'] = (df['ddate'].dt.quarter).apply(str)
df['dmonth'] = (df['ddate'].dt.month).apply(str)
df['yrqtr'] = df['dyear'].apply(str) + 'Q' + df['dqtr'].apply(str)
每列{'dyear':'2018','dqtr':'3','dmonth':'9','yrqtr':'2018Q3'}的预期对象dtype值
返回的实际对象dtype值{'dyear':'2018','dqtr':'3.0','dmonth':'9.0','yrqtr':'2018.0Q3.0'}
我认为.replace('。0','')可以解决我的问题,但是将年份缩短到最后两位数字('18','18Q3'),然后我尝试将其附加到年和年季度列,但是遇到另一个问题,其中很大一部分月值转换为0。我很茫然,无法弄清楚为什么即使更改了操作顺序(str到dt和反之亦然)