Преобразование строки в int в столбце Pandas - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть .csv с Биографическими данными Конгресса США , которые я читаю как Panda df:

df = pd.read_csv('congress100.csv', delimiter = ';', names = ['Name', 'Position', 'Party', 'State', 'Congress'], header = 0)

Мой фрейм данных выглядит так:

0                   'ACKERMAN, Gary Leonard'        'Representative'    'Democrat'  'NY'  '100(1987-1988)'
1                  'ADAMS, Brockman (Brock)'               'Senator'    'Democrat'  'WA'  '100(1987-1988)'
2                   'AKAKA, Daniel Kahikina'        'Representative'    'Democrat'  'HI'  '100(1987-1988)'
3    'ALEXANDER, William Vollie (Bill), Jr.'        'Representative'    'Democrat'  'AR'  '100(1987-1988)'
4                  'ANDERSON, Glenn Malcolm'        'Representative'    'Democrat'  'CA'  '100(1987-1988)'
5                   'ANDREWS, Michael Allen'        'Representative'    'Democrat'  'TX'  '100(1987-1988)'
6                          'ANNUNZIO, Frank'        'Representative'    'Democrat'  'IL'  '100(1987-1988)'
7             'ANTHONY, Beryl Franklin, Jr.'        'Representative'    'Democrat'  'AR'  '100(1987-1988)'
8                  'APPLEGATE, Douglas Earl'        'Representative'    'Democrat'  'OH'  '100(1987-1988)'
9            'ARCHER, William Reynolds, Jr.'        'Representative'  'Republican'  'TX'  '100(1987-1988)'
10                    'ARMEY, Richard Keith'        'Representative'  'Republican'  'TX'  '100(1987-1988)'

Я хочу преобразовать данные в столбце «Конгресс» в целое число. Прямо сейчас я сначала преобразовываю его в более простую строку:

df['Congress'] = df['Congress'].str.replace(r'100\(1987-1988\)', '1987')

Это успешно. Но затем я пытаюсь преобразовать эту более простую строку в целое число:

df['Congress'] = df['Congress'].pd.to_numeric(errors='ignore')

Я получаю сообщение об ошибке:

AttributeError: 'Series' object has no attribute 'pd'

Пожалуйста, помогите мне устранить эту ошибку и упростить мой код.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Еще один способ добиться этого. Это будет работать, если в столбце есть только цифры: -

 df['Congress'] = df['Congress'].astype(int)
0 голосов
/ 04 ноября 2018

Вам нужно позвонить pd.numeric как это:

import pandas as pd

df = pd.DataFrame(data=[str(i + 1980) for i in range(10)], columns=['Congress'])
df['Congress'] = pd.to_numeric(df['Congress'], errors='ignore')
print(df)

Код выше приведен в качестве игрушечного примера , вам просто нужно изменить строку:

df['Congress'] = df['Congress'].pd.to_numeric(errors='ignore')

до:

df['Congress'] = pd.to_numeric(df['Congress'], errors='ignore')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...