Я создаю небольшую программу управления финансами, которая импортирует мои транзакции из CSV в Python. Я хочу присвоить значения новому столбцу 'category' на основе строк, найденных в столбце 'details' . Я могу сделать это для одного, но мой вопрос, как мне это сделать, если у меня был огромный список возможных строк? Например, str.contains('RALPHS')
заменит значение этого столбца на "бакалейные товары" и т. Д.
Например, ниже у меня есть список строк:
dining = ['CARLS', 'SUBWAY', 'DOMINOS']
и если какая-либо из этих строк будет найдена в моей серии, то она обновит серию соответствующей категории до «обеденная».
Вот небольшой пример запуска ниже.
import pandas as pd
import numpy as np
data = [
[-68.23 , 'PAYPAL TRANSFER'],
[-12.46, 'RALPHS #0079'],
[-8.51, 'SAVE AS YOU GO'],
[25.34, 'VENMO CASHOUT'],
[-2.23 , 'PAYPAL TRANSFER'],
[-64.29 , 'PAYPAL TRANSFER'],
[-7.06, 'SUBWAY'],
[-7.03, 'CARLS JR'],
[-2.35, 'SHELL OIL'],
[-35.23, 'CHEVRON GAS']
]
df = pd.DataFrame(data, columns=['amount', 'details'])
df['category'] = np.nan
str_xfer = 'TRANSFER'
df['category'] = (df['details'].str.contains(str_xfer)).astype(int)
df['category'] = df['category'].replace(
to_replace=1,
value='transfer')
df
amount details category
0 -68.23 PAYPAL TRANSFER transfer
1 -12.46 RALPHS 0
2 -8.51 SAVE AS YOU GO 0
3 25.34 VENMO CASHOUT 0
4 -2.23 PAYPAL TRANSFER transfer
5 -64.29 PAYPAL TRANSFER transfer
6 -7.06 SUBWAY 0
7 -7.03 CARLS JR 0
8 -2.35 SHELL OIL 0
9 -35.23 CHEVRON GAS 0
Большое спасибо.