Замените значения в серии панд, где заменяемый элемент содержит часть элемента, на которую он должен быть заменен - PullRequest
0 голосов
/ 26 мая 2018

Например, я хочу заменить 2/8/2014 0:00 на 2014 и 1/29/2015 0:00 на 2015 и впредь.

2014               180657
2015               153837
2014                72395
2012                69708
2013                61364
2015                54117
2013                 3313
2012                 1076
2/8/2014 0:00           2
7/3/2014 0:00           2
1/29/2015 0:00          2
9/1/2014 0:00           2
11/22/2014 0:00         2
10/16/2014 0:00         2

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Попробуйте:

s = pd.Series(['2017','2/3/2018 6:45'])
s = s.apply(lambda x: x.split()[0][-4:])
print(s)

Вывод:

0    2017
1    2018
dtype: object

Это только с фиктивной серией

просто используйте apply функция для ряда, затем добавьте lambda в параметры, затем просто индексируйте его

0 голосов
/ 26 мая 2018

Начиная с серии, ser:

2014               180657
2015               153837
2014                72395
2012                69708
2013                61364
2015                54117
2013                 3313
2012                 1076
2/8/2014 0:00           2
7/3/2014 0:00           2
1/29/2015 0:00          2
9/1/2014 0:00           2
11/22/2014 0:00         2
10/16/2014 0:00         2
dtype: int64

Вы можете преобразовать индекс в дату и время и извлечь год:

ser.index = pd.to_datetime(ser.index, errors='coerce').year
ser

2014    180657
2015    153837
2014     72395
2012     69708
2013     61364
2015     54117
2013      3313
2012      1076
2014         2
2014         2
2015         2
2014         2
2014         2
2014         2
dtype: int64

Если это вводит NaN, вы можете исключитьих по

ser = ser[ser.index.notnull()]
ser.index = ser.index.astype('int')

И если вы хотите сгруппировать это по годам, вы можете сгруппировать по индексу:

ser.groupby(level=0).sum()
Out: 
2012     70784
2013     64677
2014    253062
2015    207956
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...