У меня есть фрейм данных, в котором мне нужно добавить столбец на основе определенного условия. Я успешно делаю это ( Как использовать элементы списка в качестве условия в np.where ()? ). Однако, когда я применяю одну и ту же логику дважды, она не работает.
мой фрейм данных:
period period_type
JAN16 month
JAN16 YTD
2017 2017
Вместо этого я хочу: 2017 annual
.
Тем не менее, я получаю annual
для всех значений, то есть месяцев, с начала года и т. Д. Меняются на годовые.
Блок кода:
def add_period_type(df):
months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
m = df.period.str.startswith(tuple(months))
df['period_type'] = np.where(m, 'month', df.period.str.split().str[0])
df.loc[~m, 'period'] = df.loc[~m, 'period'].str.split().str[1]
df["period"] = df["period"].combine_first(df["period_type"])
years = [str(x) for x in range(2000, 2100)]
y = df.period.str == (tuple(years))
print(y)
df['period_type'] = np.where(y, 'annual', df.period_type.str)
return df
В первые 3-4 строки добавляется новый столбец period_type
. Затем я хочу немного изменить этот столбец на основе вышеупомянутого условия (проверьте, является ли значение годом, и, если это так, присваивает ежегодный тип period_type. Вместо этого код thbis не работает, он присваивает annual
всем .