столбец в моем кадре данных pandas, в котором смешаны кредит и дебет, я хочу создать отдельные столбцы для кредита и дебета - PullRequest
0 голосов
/ 14 июля 2020
df['Withdrawal (Dr)/ Deposit (Cr)']
Out[571]: 
0      214.82 (Cr)
1       50.00 (Dr)
2       50.00 (Dr)
3       50.00 (Dr)
4       19.00 (Dr)
    
785    161.00 (Dr)
786    155.45 (Dr)
787     69.00 (Dr)
788     51.00 (Dr)
789     73.00 (Cr)
Name: Withdrawal (Dr)/ Deposit (Cr), Length: 790, dtype: object

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Предлагаю разделить данные по идентификатору. Кроме того, вам, скорее всего, понадобится число в виде чисел. Давайте сгенерируем некоторые данные:

my_df = pd.DataFrame({'mycol':['214.82 (Cr)','50.00 (Dr)','50.00 (Dr)','50.00 
                     (Dr)','19.00 (Dr)','161.00 (Dr)','155.45 (Dr)','69.00 (Dr)',
                     '51.00 (Dr)','73.00 (Cr)'] })

Я создаю новые столбцы CR и DR на основе символов в исходном столбце. Затем снимаю струнную часть. (Вы также можете сделать это с помощью трюков с regEx.) Наконец, я конвертирую цифры в числа для использования в будущем.

my_df['CR'] = my_df[my_df['mycol'].str.contains('Cr')]['mycol'].str.replace('\(Cr\)', '').astype(float)
my_df['DR'] = my_df[my_df['mycol'].str.contains('Dr')]['mycol'].str.replace('\(Dr\)', '').astype(float)
0 голосов
/ 14 июля 2020
df['dr/cr'] = df['Withdrawal (Dr)/ Deposit (Cr)'].apply(lambda x: x.split("(")[1])
df2 = pd.get_dummies(df['dr/cr'])
df = pd.concat([df,df2], axis = 1)

Надеюсь, что поможет. Или, по крайней мере, это даст вам представление о том, что вам нужно делать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...