这里是菜鸟总数,对初学者的问题感到抱歉。 我一直在研究Pandas的大脑,试图过滤Dataframe中的一系列数据以查找包含一个字符串列表中的一个的行。
import pandas as pd
streets = ['CONGRESS', 'GUADALUPE', 'BEN WHITE', 'LAMAR', 'MANCHACA', 'BURNET', 'ANDERSON', 'BRAKER' ]
# the actual list of street names is much longer than this
strs = pd.read_csv('short_term_rental_locations.csv')
# the following returns no values, or all 'False' values to be more accurate
strs[strs['PROP_ADDRESS'].isin(streets)]
# but if I use .contains, i can find rows that contain part of the
# street names, but .contains has a limit of six positional arguments.
strs[strs['PROP_ADDRESS'].str.contains('CONGRESS')]
我尝试将通配符*与.isin一起使用无济于事。我为此感到很愚蠢。任何帮助,不胜感激。谢谢!
答案 0 :(得分:0)
.contains的位置参数限制为六个。
这里有些误解。尚不清楚“六个位置参数”指的是什么。严格来说,pd.Series.str.contains
最多有5个参数。但是实际上只有一个包含要搜索的字符串。
在这种情况下,您可以使用默认启用的正则表达式来构建要与pd.Series.str.contains
一起使用的单个字符串:
streets = ['CONGRESS', 'GUADALUPE', 'BEN WHITE', 'LAMAR',
'MANCHACA', 'BURNET', 'ANDERSON', 'BRAKER' ]
searchstr = '|'.join(streets)
strs[strs['PROP_ADDRESS'].str.contains(searchstr)]