请建议如何处理以下情况。
下面是数据框。
0 1
AAAXXXX08 / 26/2020
ABC0000000001PPPP测试
ABC0000000002PPPP测试
ABC0000000003PPPP测试
ABC0000000004PPPP测试
ABC0000000005PPPP测试
ABC0000000006PPPP测试
当数据帧中的记录以“ AAA”开头时,如何仅从数据帧中提取值“ 08/26/2020”并分配给变量?
我想根据位置提取日期“ 08/26/2020”(因为我知道日期字段的位置)。不知道是否可能。
目前,我正在采用以下方法。
谢谢
答案 0 :(得分:0)
这是.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='\s\s+', 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