2013-06-30 33 views
2

这可能是一个简单的问题,但无法弄清楚如何执行。我有一个熊猫数据框与以下列。print boolean正则表达式匹配的真实结果 - Pandas Dataframe

df.columns = ['IP', 'Time', 'Method', 'Resource', 'Status', 'Bytes', 'Referrer', 'Agent'] 

我想要做一些正则表达式匹配的df,[ '资源']列。我以流畅的方式做到了。

df.Resource.str.contains('pdf') 

然后,我需要只打印 '真' 与DF [ 'IP'],DF [ '时间'],和df [ '资源']的结果。这个怎么做?

回答

2

我们必须使用na = false,因此根据pandas-docs可以将缺失的值视为True或False。这工作得很好。

print df[df.Resource.str.contains('pdf',na=False)][['IP', 'Time', 'Resource']][0:5] 
0

如果我理解,这应该工作。

df[df.Resource.str.contains('pdf')][['IP', 'Time', 'Resource']] 

基本上,它是利用面膜中df行限制为仅那些返回True,那么它只是给你列:IPTimeResource

+0

它给出了“ValueError:无法用包含NA/NaN值的矢量进行索引”。我试着用fillna(0)?同样的错误给出。你有什么主意吗? –

+0

在你的答案中,我们如何咀嚼“真实”的价值观? –

+1

'df.Resource.str.contains('pdf')'返回一个布尔值,如果该字符串包含''pdf''。 – tshauck