【发布时间】:2018-11-23 05:22:09
【问题描述】:
我正在编写一个脚本来读取和处理 Excel 文件中的数据,我需要过滤包含多个字符串的行。
目前,我正在阅读的每种类型的 Excel 工作表(每种工作表类型都有一个从处理读取文件和第一次处理的父级继承的子类)的过滤器方法是硬编码的,但是这样得到随着我要分析的工作表数量不断增加,这非常乏味,我正在寻找更优雅的解决方案。
现在,我是这样实现的:
def _find(self,find_str,column='Data1'):
return (self.df[column].str.find(find_str) > -1)
def filter(self):
self.df_filter = self.df[(self._find('This') | self._find('is'))
& self._find('an') | self._find('example')]
为每个子类重新实现过滤器方法。有时,逻辑(实际上是二进制)表达式会变得很长。
是否有一种一致的、可读的方式来缩短它? 我想到了将类似逻辑表达式的对象传递给通用过滤器函数的方法,例如
gen_find(('This' | 'is') & 'an' | 'example')
(我知道这可能是个坏主意,但你明白了)
【问题讨论】:
标签: python string python-3.x pandas series