gpt4 book ai didi

python - 使用基于正则表达式的部分匹配来选择 Pandas 数据框的子数据框

转载 作者:行者123 更新时间:2023-11-28 21:03:00 28 4
gpt4 key购买 nike

我有一个包含两列的 Pandas 数据框,一列(“Process Parameter”列)包含字符串,另一列(“Value”列)包含相应的浮点值。我需要过滤掉与列“过程参数”中的一组键部分匹配的子数据帧,并提取与这些键匹配的数据帧的两列

df = pd.DataFrame({'Process Parameter' : ['Temperature', 'System Clk', 'Core Clk', 'Bilinear Coeff', 'Prec Coeff', 'Yield'], 'Value' : [1.2,2.0,3.0, 5.1, 6.2, 7.4]})

keys =['Clk', 'Coeff']

我应该得到一个输出

df_filtered 为

Process Parameter    Value
System Clk 3.0
Core Clk 2.0
Bilinear Coeff 5.1
Prec Coeff 6.2

我尝试了几种乱七八糟的方法,比如将数据框转换为列表,然后使用re.search(), map, str.contains() 等。谁有非常有效的解决方案请告诉我

感谢和问候,桑托斯

最佳答案

选项 1
您可以使用 numpy.core.defchararray.find

from numpy.core.defchararray import find

p = df['Process Parameter'].values.astype(str)
df[(find(p[:, None], keys) >= 0).any(1)]

Process Parameter Value
1 System Clk 2.0
2 Core Clk 3.0
3 Bilinear Coeff 5.1
4 Prec Coeff 6.2

解释
numpy.core.defchararray 标识它在字符串中找到另一个字符串的位置。如果未找到,则返回 -1。所以我只需要检查 >= 0。我还利用 numpy 广播然后检查是否在所有 keys 中找到任何匹配项。


选项 2
我喜欢集合逻辑。

df[df['Process Parameter'].str.split().apply(set) & set(keys)]

Process Parameter Value
1 System Clk 2.0
2 Core Clk 3.0
3 Bilinear Coeff 5.1
4 Prec Coeff 6.2

关于python - 使用基于正则表达式的部分匹配来选择 Pandas 数据框的子数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47131517/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com