У меня есть фрейм данных ddd
с полем date
, содержащим грязные значения даты в виде текста:
ddd= pd.DataFrame([["80's of 1900"], ["80's of the 19th century"], ["90's of the 18th century"], ["1955"], ["1822"]], columns=['date'])
In [2]: ddd
Out[2]:
index date
0 80's of 1900
1 80's of the 19th century
2 90's of the 18th century
3 1955
4 1822
Я пытаюсь преобразовать текстовые значения в год, как в строке 3 и 4 для дальнейшего анализа. Чтобы сделать это, я написал для l oop с оператором if для различения строк, таких как 0 и 1, 2.
Пока у меня есть код, который создает массив numpy индексов, где поле date
содержит 's of
для итерации по этим строкам:
selected_index = ddd[ddd["date"].str.contains('\'s of')].index.values
и a для l oop с некоторым регулярным выражением для перестановки чисел в строке и изменения '80-х из 1900' на 1980 и ' 90-е годы XVIII века до 1790 года:
for index in selected_index:
if ddd.at[index, 'date'].str.contains('th century')]:
num = re.findall('[0-9]', ddd.at[index, 'date'])
num2 = ''.join(num)
num3 = str(num2)[2:4]
num4 = int(num3) - 1
num5 = str(num4)
num6 = str(num2)[:2]
ddd.at[index, 'date'] = num5 + num6
else:
num = re.findall('[0-9]', ddd.at[index, 'date'])
num2 = ''.join(num)
num3 = str(num2)[:2]
num4 = str(num2)[2:4]
ddd.at[index, 'date'] = num4 + num3
Но я получаю следующую ошибку:
AttributeError: 'str' object has no attribute 'str'
Ожидаемый результат:
index date
0 1980
1 1880
2 1790
3 1955
4 1822
Заранее спасибо за ваши предложения!