Pandas:在数据框中搜索星号时出错。例如:busiest_hosts['host'].str.contains('***.botol.dk')
Pandas: Error while searching asterisk in dataframe. Eg: busiest_hosts['host'].str.contains('***.botol.dk')
下面是我的数据框的样子,您会看到我的数据框列之一是 URL,另一个是时间戳计数。当我 运行 此代码时:busiest_hosts[busiest_hosts['host'].str.contains('***.novo.dk')==True]
我得到一个错误:error: nothing to repeat at position 0
。我认为这是因为我的 URL 的第一个元素是 *
。这似乎是一个 python 错误(我的 python 版本是 3.x)。如果有人能帮我解决这个问题,我将不胜感激。
contains
假定字符串是正则表达式,并将 *
解释为重复前一个字符或表达式的命令。你想转义*
。当你这样做的时候,也要逃避 .
。
busiest_hosts[busiest_hosts['host'].str.contains('\*{3}\.novo\.dk')==True]
演示
busiest_hosts = pd.DataFrame(dict(host=['***.novo.dk', '007.thegap.com'], timestamp=[16, 45]))
print(busiest_hosts)
host timestamp
0 ***.novo.dk 16
1 007.thegap.com 45
busiest_hosts[busiest_hosts['host'].str.contains('\*{3}\.novo\.dk')==True]
host timestamp
0 ***.novo.dk 16
或者正如 OP 向我指出的那样 ;-),只需关闭正则表达式 regex=False
busiest_hosts[busiest_hosts['host'].str.contains('***.novo.dk', regex=False)==True]
下面是我的数据框的样子,您会看到我的数据框列之一是 URL,另一个是时间戳计数。当我 运行 此代码时:busiest_hosts[busiest_hosts['host'].str.contains('***.novo.dk')==True]
我得到一个错误:error: nothing to repeat at position 0
。我认为这是因为我的 URL 的第一个元素是 *
。这似乎是一个 python 错误(我的 python 版本是 3.x)。如果有人能帮我解决这个问题,我将不胜感激。
contains
假定字符串是正则表达式,并将 *
解释为重复前一个字符或表达式的命令。你想转义*
。当你这样做的时候,也要逃避 .
。
busiest_hosts[busiest_hosts['host'].str.contains('\*{3}\.novo\.dk')==True]
演示
busiest_hosts = pd.DataFrame(dict(host=['***.novo.dk', '007.thegap.com'], timestamp=[16, 45]))
print(busiest_hosts)
host timestamp
0 ***.novo.dk 16
1 007.thegap.com 45
busiest_hosts[busiest_hosts['host'].str.contains('\*{3}\.novo\.dk')==True]
host timestamp
0 ***.novo.dk 16
或者正如 OP 向我指出的那样 ;-),只需关闭正则表达式 regex=False
busiest_hosts[busiest_hosts['host'].str.contains('***.novo.dk', regex=False)==True]