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

gcuhipw9  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(67)

目前,我正在使用一个Excel工作表作为评估的例子。它是一个导入的副本,其中的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框架中。正如你所看到的,我正在尝试提取函数中的正则表达式。
使用regex 101编辑器,我发现了一些regex,命名的捕获组,它给予我这样的输出:

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-]),我只是得到一个错误。
谢谢你,谢谢你

p4tfgftt

p4tfgftt1#

您的期望并不明确。但是,您可以尝试:

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

# OR

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

字符串
Regex101

相关问题