我是蟒蛇的新手。我的问题有点含糊不清。如果单元格中的任何字符串与特定通配符规则匹配,我希望从dataFrame中选择行。让我们假设这个例子:
表到屏幕:
df=pd.DataFrame({'Column':[
'select rows in pandas DataFrame using comparisons against two columns',
'select rows from a DataFrame based on values in a column in pandas',
'use a list of values to select rows from a pandas dataframe',
'selecting columns from a pandas dataframe based on row conditions',
'select particular columns from inside groups in pandas dataframe']})
Column
0 select rows in pandas DataFrame using comparisons against two columns
1 select rows from a DataFrame based on values in a column in pandas
2 use a list of values to select rows from a pandas dataframe
3 selecting columns from a pandas dataframe based on row conditions
4 select particular columns from inside groups in pandas dataframe规则:
Rules=pd.DataFrame({'SearchTerms':['*select*DataFrame*row*','*select*dataframe*row*']})
SearchTerms
0 *select*DataFrame*row*
1 *select*dataframe*row*结果:
Column
0 select rows in pandas DataFrame using comparisons against two columns
1 select rows from a DataFrame based on values in a column in pandas
2 use a list of values to select rows from a pandas dataframe我尝试使用fnmatch来处理这样的多个语句:
import fnmatch
selection=[]
for row in df['Column']:
selection.append(fnmatch.fnmatch(row,Rules[0])|fnmatch.fnmatch(row,Rules[1]))问题
如何从带有可变通配符语句的dataFrame中选择行?
人生何去何从。来人救救我!)
提前谢谢你,
发布于 2017-02-12 12:38:50
“通配符”的解决方案:
数据:
In [53]: df
Out[53]:
Column
0 select rows in pandas DataFrame using comparisons against two columns
1 select rows from a DataFrame based on values in a column in pandas
2 use a list of values to select rows from a pandas dataframe
3 selecting columns from a pandas dataframe based on row conditions
4 select particular columns from inside groups in pandas dataframe
In [54]: Rules
Out[54]:
SearchTerms
0 *select*DataFrame*row*
1 *select*dataframe*row*解决方案:
In [55]: pat = Rules.SearchTerms.str.replace('\*', r'.*').str.cat(sep='|')
In [56]: df[df.Column.str.contains(pat, flags=re.I)]
Out[56]:
Column
3 selecting columns from a pandas dataframe based on row conditions生成的RegEx模式:
In [64]: pat
Out[64]: '.*select.*DataFrame.*row.*|.*select.*dataframe.*row.*'发布于 2017-02-12 12:43:07
我认为在熊猫中使用内置字符串匹配功能可能会更成功。如果您有一个熊猫系列对象( DataFrame列是一个Series对象),它是一个字符串集合,您可以调用.str.<method>。有大量的字符串方法可用,但在本例中,您可以使用.str.match(...)或.str.contains(...)。
这两种方法都接受正则表达式语句。这意味着将通配符表达式更改为regEx。
df[df.Column.str.match('select|DataFrame|row', case=False)]
Column
0 select rows in pandas DataFrame using comparis...
1 select rows from a DataFrame based on values i...
3 selecting columns from a pandas dataframe base...
4 select particular columns from inside groups i...https://stackoverflow.com/questions/42187261
复制相似问题