#python-3.x #pandas #dataframe
#python-3.x #pandas #фрейм данных
Вопрос:
Пожалуйста, предложите, как справиться с приведенным ниже сценарием.
Ниже приведен фрейм данных.
0 1
AAAXXXX08/26/2020
ТЕСТ ABC0000000001PPPP
ТЕСТ ABC0000000002PPPP
ТЕСТ ABC0000000003PPPP
ТЕСТ ABC0000000004PPPP
ТЕСТ ABC0000000005PPPP
ТЕСТ ABC0000000006PPPP
как мы можем извлечь только значение ‘26.08.2020’ из фрейма данных и присвоить переменной, когда запись в фрейме данных начинается с ‘AAA’?.
Я хотел бы извлечь дату ‘26.08.2020’ на основе позиции (поскольку мне известно о позиции поля даты). Не уверен, возможно ли это.
В настоящее время я использую следующий подход.
- Выбор записи, соответствующей критериям (начинается с AAA) и запись в файл.
- Затем считываем тот же файл и используем нарезку для получения требуемых данных.
Спасибо
Комментарии:
1. Просто опустите запись в файл, вместо этого нарежьте его только там
Ответ №1:
Вот способ с .extract()
методом:
from io import StringIO
import pandas as pd
data = '''idx data
0 AAAXXXX08/26/2020
1 ABC0000000001PPPP TEST
2 ABC0000000002PPPP TEST
3 ABC0000000003PPPP TEST
4 ABC0000000004PPPP TEST
5 ABC0000000005PPPP TEST
6 ABC0000000006PPPP TEST'''
# create data frame
df = pd.read_csv(StringIO(data), sep='ss ', engine='python')
# pull out date, if line starts with 'AAA' and ends with date in mm/dd/yyyy format:
df['new_date'] = (df['data'].str.extract(r'AAA.*(d /d /d )')
.astype('datetime64[D]'))
# results
print(df)
idx data new_date
0 0 AAAXXXX08/26/2020 2020-08-26
1 1 ABC0000000001PPPP TEST NaT
2 2 ABC0000000002PPPP TEST NaT
3 3 ABC0000000003PPPP TEST NaT
4 4 ABC0000000004PPPP TEST NaT
5 5 ABC0000000005PPPP TEST NaT
6 6 ABC0000000006PPPP TEST NaT