从具有混合条目的列中提取 Pandas 数据框

问题描述 投票:0回答:1

目前我正在使用Excel表格作为评估示例。 它是导入的副本,程序倾向于用混合条目填充列。

在 Excel 中,它看起来像这样: Excel sheet

我的代码在 VS Code 中看起来像这样:


   # 03.01.2024
   # Regex - Reguläre Ausdrücke zum Filtern, hier mit dem Frame aus der Auswertung

   import pandas as pd  
   import numpy as np
   from datetime import datetime

   from pandas import * 

   # Einlesen der Excel
   excel_file = 'F:\\Google Drive\\Matthias\\Arbeit\\ISQM\\08 - Tool Menü - Skripte DD                                                  19.12.2023\\Testskripte\\value_cnts_2.xlsx'  

  xlsx = ExcelFile(excel_file)                
  excel_Tabelle = xlsx.sheet_names[0]         
  df  = xlsx.parse(excel_Tabelle)  

  # df['Vorgänger'] = df['Vorgänger'].fillna(0)
  #df = df['Nachfolger'].str.replace('----', '')

  df['Verknüpfung1'] = df['Nachfolger'].str.extract('(?P<EE>EE)')
  #df['Verknüpfung3'] = df['Nachfolger'].str.extract('[EA+,AA,EA-]')
  df['Verknüpfung2'] = df['Nachfolger'].str.extract('(?P<EE>AA)')

  df['Verknüpfung1'] = df['Verknüpfung1'].fillna(0)
  df['Verknüpfung2'] = df['Verknüpfung2'].fillna(0)

  df`
`

我将 Excel 工作表写入 pandas 数据框。 正如你所看到的,我正在尝试提取函数中的正则表达式。

使用 regex101 编辑器,我找到了一些正则表达式,即命名的捕获组,它给了我以下输出:

Nachfolger  Verknüpfung1    Verknüpfung2
0   54;20   0   0
1   ----    0   0
2   ----    0   0
3   ----    0   0
4   ----    0   0
5   ----    0   0
6   ----    0   0
7   ----    0   0
8   ----    0   0
9   ----    0   0
10  ----    0   0
11  ----    0   0
12  ----    0   0
13  ----    0   0
14  ----    0   0
15  ----    0   0
16  21;4;49;50;51   0   0
17  52  0   0
18  ----    0   0
19  52;128AA;207;22;223 0   AA
20  ----    0   0
21  52;24   0   0
22  28  0   0
23  ----    0   0
24  52;227;27   0   0
25  30  0   0
26  227 0   0
27  ----    0   0
28  52;31   0   0
29  ----    0   0
30  138EE;34    EE  0
31  ----    0   0
32  139EE;36    EE  0
33  ----    0   0
34  140EE;38    EE  0
35  ----    0   0
36  141EE;40    EE  0
37  ----    0   0

我想过滤包含字符的列。我想数数。

我现在的问题是有没有办法只能在一列中使用正则表达式。 我尝试了另一个表达式 ([EA+,AA,EA-]),但我得到了一个错误。

谢谢!

python pandas database dataframe regex-group
1个回答
0
投票

您的期望不清楚。不过,你可以尝试:

df['Verknüpfung3'] = df['Nachfolger'].str.extract(r'(EA[+-]|AA)')

正则表达式101

© www.soinside.com 2019 - 2024. All rights reserved.