24h*_*ast 5 python string series dataframe pandas
总菜鸟在这里,对不起初学者的问题。我一直在 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')]
Run Code Online (Sandbox Code Playgroud)
我试过在 .isin 中使用通配符 * 无济于事。为这个而挣扎,我感到很愚蠢。非常感谢任何帮助。谢谢!
.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)]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4855 次 |
最近记录: |