как получить определенные значения из столбца фрейма данных на основе позиции

#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