簡體   English   中英

如何從Pandas,Python切片findall結果

[英]How to slice a findall result from Pandas, Python

我想使用特定模式從一列從excel電子表格中提取的工作表名稱中進行提取,並且僅從結果列表中檢索最后一個結果。

例如:

"<Worksheet ""2012"">"
"<Worksheet ""2012"">"
"<Worksheet ""2012"">"
"<Worksheet ""2012 - 2013"">"
"<Worksheet ""2012 - 13"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"
"<Worksheet ""2011-2012"">"

例如,我想從工作表列中提取2011-2012年的12個。

我想使用以下代碼來提取與模式匹配的最后兩位數字,但是出現錯誤: 只能使用MultiIndex進行元組索引

df['worksheet'].str.findall('\d{2}')[:,-1]

如何使用工作表列中的模式正確提取並僅檢索最后一個實例?

結果應如下所示:

12
12
12
13
13
12
12
12
12
12
12
12
12
12
12

使用.str訪問器,可以使用索引或使用get方法訪問列表的一部分。

我認為您正在尋找:

df['worksheet'] = df['worksheet'].str.findall('\d{2}').str[-1]

輸出:

0     12
1     12
2     12
3     13
4     13
5     12
6     12
7     12
8     12
9     12
10    12
11    12
12    12
13    12
14    12
dtype: object

您可以這樣做:

df['worksheet'] = df['worksheet'].astype(str).str[-4:-2]

您可以使用map來訪問findall結果中的列表,例如:

碼:

df['worksheet'].str.findall('\d{2}').map(lambda x: x[-1])

測試代碼:

import pandas as pd
import math

df = pd.DataFrame([
    "<Worksheet ""2012"">",
    "<Worksheet ""2012"">",
    "<Worksheet ""2012"">",
    "<Worksheet ""2012 - 2013"">",
    "<Worksheet ""2012 - 13"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
    "<Worksheet ""2011-2012"">",
], columns=['worksheet'])
print(df)

print(df['worksheet'].str.findall('\d{2}').map(lambda x: x[-1]))

結果:

                  worksheet
0          <Worksheet 2012>
1          <Worksheet 2012>
2          <Worksheet 2012>
3   <Worksheet 2012 - 2013>
4     <Worksheet 2012 - 13>
5     <Worksheet 2011-2012>
6     <Worksheet 2011-2012>
7     <Worksheet 2011-2012>
8     <Worksheet 2011-2012>
9     <Worksheet 2011-2012>
10    <Worksheet 2011-2012>
11    <Worksheet 2011-2012>
12    <Worksheet 2011-2012>
13    <Worksheet 2011-2012>
14    <Worksheet 2011-2012>

0     12
1     12
2     12
3     13
4     13
5     12
6     12
7     12
8     12
9     12
10    12
11    12
12    12
13    12
14    12
Name: worksheet, dtype: object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM