pandas условный str concat (множественный выбор) со столбцом Datetime - PullRequest
0 голосов
/ 17 мая 2019

Это дополнительный вопрос: ранее я присоединился только на день вперед к столбцу год моей даты, чтобы он выглядел как день-вперед_2019 или день-вперед_2018 в зависимости от года в столбце Дата

У меня есть два столбца:

DELIVERY_PERIOD   
day-ahead
day-ahead
week-ahead
month-ahead
week1_2019
week2_2018

и

Date
13/05/2019
14/05/2019
11/05/2019
10/05/2019

Теперь у меня есть несколько записей, которые я хотел бы сделать "xxxxx_year", поэтому я попытался создать список фильтров для тех, кого яхотел и с тем же кодом я получил этот "TypeError: объект 'int' не повторяемый" не уверен, что это способ, которым я создаю свой список фильтров

, так что это код, который работает для одной строки, котораяя хотел

    gas.loc[gas['Period'] == 'Day-ahead','Period'] = gas['Period'] + '_' + gas['Date'].dt.year.astype(str)

, если я создаю список фильтров

    filterlist = gas[gas['Period'].isin(['week-ahead','month-ahead',"day-ahead"])]

    gas.loc[gas['Period'] == filterlist,'Period'] = gas['Period'] + '_' + gas['Date'].dt.year.astype(str)

, дающий мне TypeError: объект 'int' не повторяется

Ответы [ 2 ]

2 голосов
/ 18 мая 2019

разобрался, как это сделать, для всех, кому интересно, я использовал:

    gas.loc[gas['Period'].isin(['week-ahead','month-ahead',"day-ahead"]),'Period'] = gas['Period'] + '_' + gas['Date'].dt.year.astype(str)
0 голосов
/ 17 мая 2019

Попробуйте использовать NumPy где.

gas['Period]= np.where((gas['Period'].isin(['week-ahead','month-ahead','day-ahead']), gas['Period'] + '_' + gas['Date'].dt.year.astype(str), gas['Period'])

в этом случае вы перезаписываете только столбцы, к которым применяется фильтр, старый остается прежним

, иначе сначала отфильтруйте ваш фрейм данных, а затем изменитестолбец: gas = gas[gas['Period'].isin(['week-ahead','month-ahead',"day-ahead"])]

gas['Period'] = gas['Period'] + '_' + gas['Date'].dt.year.astype(str)

...