2017-05-03 29 views
2

我有一个看起来像这样
“IP”, “DNS”, “NetBIOS的” 一表中, “OS”
“XXX”, “姓名”,”名称”,‘视窗2012’
‘XXX’,‘姓名’,‘姓名’,‘惠普的JetDirect’
Python的大熊猫如果在列d值等于Windows打印服务器

我试图用熊猫有代码看在OS列找到一种方法,如果它等于“Windows”(任何在“Windows”之后的任何内容都不重要),它将打印单词“工作站”,如果它是其他任何东西它将打印“打印机”

我也有这行代码将插入新列。但我需要它来知道打印基于什么样的价值对上面的问题

df.insert(4,'Report Category',' ') 

回答

1

您可以使用numpy.wherestr.contains

print (df['OS'].str.contains('Windows')) 
0  True 
1 False 
Name: OS, dtype: bool 

#for last column 
df['Report Category'] = np.where(df['OS'].str.contains('Windows'), 'Workstation', 'Printer') 
print (df) 
     IP DNS NetBIOS   OS Report Category 
0 x.x.x name name Windows 2012  Workstation 
1 x.x.x name name HP JetDirect   Printer 

并为4th列使用insert

df.insert(4,'Report Category', np.where(df['OS'].str.contains('Windows'), 
             'Workstation', 'Printer')) 
print (df) 
     IP DNS NetBIOS   OS Report Category 
0 x.x.x name name Windows 2012  Workstation 
1 x.x.x name name HP JetDirect   Printer 
+0

这是否仍然添加第4列中的“报告类别”列? – Wo0o

+0

是的,当然。检查编辑的答案。 – jezrael

+0

以下内容的用途是什么? ('Windows')) 0 True 1 False Name:OS,dtype:bool“。 这是否需要像您一样打印出来? 此外,我可以有超过0,1真/假在这?它是否可以解释3,4,5个选项? – Wo0o