pandas 条件字符串与日期时间列连接
pandas conditional str concat with a Datetime column
我只想加入日期列中年份的日期,使其看起来像 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
df.DELIVERY_PERIOD == 'day-ahead' = df.str.cat(df.Date.dt.year)
出现错误,因为它不是 str 类型数据
我想过反过来
这是创建新列以从 Date.dt.year 获取年份,将其转换为 str 并且仅与日前加入
但我认为这还有很长的路要走
我欢迎任何建议
我会这样做,
假设您的数据框名为 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
我只想加入日期列中年份的日期,使其看起来像 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
df.DELIVERY_PERIOD == 'day-ahead' = df.str.cat(df.Date.dt.year)
出现错误,因为它不是 str 类型数据 我想过反过来 这是创建新列以从 Date.dt.year 获取年份,将其转换为 str 并且仅与日前加入 但我认为这还有很长的路要走 我欢迎任何建议
我会这样做,
假设您的数据框名为 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