Panda中的Regex使用^过滤列



我正在使用Pandas,希望使用正则表达式过滤列。当我将正则表达式更改为rf"{c}(.)?(d)*"时,它会返回一些内容,但如果我希望它以某个字母开头,它会中断,并且过滤后的数据帧为空。

for c in self.variables.split():
reg = rf"^{c}(.)?(d)*$"
print(reg)
filtered = self.raw_data.filter(regex=reg)

我做错了什么,我该如何修复。

附言:这是的数据样本

variable      T    T.1    T.2    T.3    T.4  ...   T.8    T.9      l       phi     dl
0         29.63  27.87  26.95  26.64  26.25  ...  23.3  22.42  2.141  0.093551  0.002
1         29.70    NaN    NaN    NaN    NaN  ...   NaN    NaN  2.043  0.098052  0.002
2         29.62    NaN    NaN    NaN    NaN  ...   NaN    NaN  1.892  0.089973  0.002
3         29.65    NaN    NaN    NaN    NaN  ...   NaN    NaN  1.828  0.093132  0.002

我希望它返回4个dfs,每个dfs只包含特定变量的数据,例如

variable      T    T.1    T.2    T.3    T.4    T.5    T.6    T.7   T.8    T.9
0         29.63  27.87  26.95  26.64  26.25  25.62  24.99  23.85  23.3  22.42
1         29.70    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN
2         29.62    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN
3         29.65    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN
4         29.38    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN

或者只有l没有dl(这就是为什么我认为我需要在正则表达式中使用^(

variable      l   
0         2.141  
1         2.043  
2         1.892  
3         1.828

Thx提前亲爱的社区

详细信息

  • variable匹配文字字符串variable
  • |逻辑或,因为您希望列变量与其他所有数据帧一起使用
  • ^-字符串的开头
  • {c}-后面跟着一个具有所需变量的f-string
  • (.d+)?-后面跟着一个或多个数字的文字.的可选序列
  • $—字符串结束
import pandas as pd
df = pd.read_csv("sample.csv", sep='s+')
print(df)
variables = ['T', 'l', 'phi', 'dl']
for c in variables:
ds = df.filter(regex=rf"variable|^{c}(.d+)?$")
print(f'n---Variable: [{c}] ---')
print(ds)
---Variable: [T] ---
variable      T    T.1    T.2    T.3    T.4    T.5    T.6    T.7   T.8    T.9
0         0  29.63  27.87  26.95  26.64  26.25  25.62  24.99  23.85  23.3  22.42
1         1  29.70    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN
2         2  29.62    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN
...
---Variable: [l] ---
variable      l
0         0  2.141
1         1  2.043
2         2  1.892
...
---Variable: [phi] ---
variable       phi
0         0  0.093551
1         1  0.098052
2         2  0.089973
...
---Variable: [dl] ---
variable     dl
0         0  0.002
1         1  0.002
2         2  0.002
...

最新更新