Я пытаюсь работать с набором данных из Музея современного искусства и sh, чтобы преобразовать некоторые серии в целочисленные значения (для расчетов позже). Я пытался преобразовать dtype, используя метод .astype, но мне это не удалось. Я где-то видел, что вы можете сделать это в той же строке кода, что и операция open csv, поэтому я попытался сделать это, хотя и безуспешно.
import pandas as pd
df = pd.read_csv('artworks.csv', dtype ={'BeginDate': int})
df.head()
df.dtypes
TypeError Traceback (последний вызов был последним) pandas_libs \ parsers.pyx в pandas ._ libs.parsers.TextReader._convert_tokens ()
ValueError: недопустимый литерал для int () с основанием 10: '(1947)'
В конечном итоге Моя цель - преобразовать столбцы BeginDate и EndDate (которые являются типами объектов) в целые числа. В качестве альтернативы я попытался написать функцию для удаления скобок из дат, а также для преобразования дат в целые числа. Это ниже;
def date_cleaner(date):
if date != "":
date = date.replace("(", "")
date = date.replace(")", "")
date = int(date)
return (date)
date_cleaner(1999)
Но это также вернуло ошибку, когда я запустил код. Однако, когда я привожу ('1999') в качестве аргумента, код работает как надо. Проблема заключается в том, что когда я использую функцию в серии pandas (например, во время итерации), я получаю сообщение об ошибке ниже:
for i, row in df.iterrows():
birth_date = row[3]
death_date = row[4]
birth_date = date_cleaner(birth_date)
death_date = date_cleaner(death_date)
row[3] = birth_date
row[4] = death_date
df.head()
AttributeError Traceback (most recent call last)
<ipython-input-54-dbecb2797a53> in <module>
3 death_date = row[4]
4
----> 5 birth_date = date_cleaner(birth_date)
6 death_date = date_cleaner(death_date)
7
<ipython-input-51-3ddccbf04d24> in date_cleaner(date)
6 if date != "":
7
----> 8 date = date.replace("(", "")
9 date = date.replace(")", "")
10 date = int(date)
AttributeError: 'int' object has no attribute 'replace'
Что я делаю неправильно и как я может на самом деле очистить столбцы и конвертировать dtype?
PS Я пытался изучить метод регулярных выражений, но я новичок в python, и он кажется довольно техническим