我只希望将“日期”列中的年份与前一天一起加入,以使其看起来像“ day-ahead_2019”或“ day-ahead_2018”,具体取决于“日期”列中的年份
我有两列:
DELIVERY_PERIOD
day-ahead
day-ahead
day-ahead
day-ahead
week1_2019
week2_2018
和
Date
13/05/2019
14/05/2019
11/05/2019
10/05/2019
我尝试使用str.cat,但它不适用于Datetime64作为Date列
df.DELIVERY_PERIOD == 'day-ahead' = df.str.cat(df.Date.dt.year)
出现错误,因为它不是str类型数据 我想到了另一种方式 这是创建新列以从Date.dt.year获取年份,将其转换为str,并且仅提前一天加入 但我认为这还有很长的路要走 我欢迎任何建议
答案 0 :(得分:0)
我会这样,
假设您的数据框称为df
您可以传递astype
函数将系列转换为字符串,然后将其传递回新的或现有的系列。
df['DELIVERY_PERIOD'] = df.loc[df['DELIVERY_PERIOD'] == 'day-ahead', 'DELIVERY_PERIOD'] = df['DELIVERY_PERIOD'] + '_' + df['Date'].dt.year.astype(str)
print(df)
DELIVERY_PERIOD Date
0 day-ahead_2019 2019-05-13
1 day-ahead_2019 2019-05-14
2 day-ahead_2019 2019-11-05
3 day-ahead_2019 2019-11-05