带有条件时间列的熊猫条件str concat

时间:2019-05-15 16:25:32

标签: python string pandas concatenation string-concatenation

我只希望将“日期”列中的年份与前一天一起加入,以使其看起来像“ 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,并且仅提前一天加入 但我认为这还有很长的路要走 我欢迎任何建议

1 个答案:

答案 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