2017-03-27 38 views
-1

對於下列DF(請注意,我一起工作的DF從一個txt文件中導入原始數據被讀取,而不是低於DF用Python創建了這個例子)Str.contains在python大熊貓也標誌空白

import pandas as pd 
df = pd.DataFrame({'ID': ['12374' ,'19352','21014','2619','2621','9566','9686','61319','68086','69239','69353', '69373','69491','69535','69582','69691','174572','174637','174646','175286','175390'], 
        'Category': [' ', ' ', ' ', '???? ?????','? ?',' ','?? ?',' ',' ',' ','?? ?',' ','? ?','???? ????? ??? ','? ?','?? ?','A','A','B','B','C']}) 

我想標記,其中用戶表示一個類別爲問號。它確實有效,它標記出所有具有問號的行。但它也會將Y標誌添加到該列中空白的行中。

df['?_Flag'] = np.where(df['Category'].str.contains("\?"), 'Y', '') 

我需要使用匹配嗎?

這是數據幀我得到:

ID  Category ?_Flag 
12374     Y 
19352     Y 
21014     Y 
2619 ???? ?????  Y 
2621 ? ?   Y 
9566     Y 
9686 ?? ?   Y 
61319     Y 
68086     Y 
69239     Y 
69353 ?? ?   Y 
69373     Y 
69491 ? ?   Y 
69535 ???? ????? ??? Y 
69582 ? ?   Y 
69691 ?? ?   Y 
174572 A 
174637 A 
174646 B 
175286 B 
175390 C 

難道是相關的數據類型?

df.info() 

First_Name_E 197357 non-null object 
+3

請仔細閱讀[這](http://stackoverflow.com/questions/20109391/how-to-make-重現性好的熊貓例子),以提供一個可重現的例子。 –

+1

第二@ juanpa.arrivillaga的評論。我不明白你的答案爲什麼不能正常工作。我們需要查看可以重現問題的示例數據。 – piRSquared

+0

也要補充說,這個人似乎並沒有在他們自己的項目上投入太多精力,因爲他們在過去的2個小時裏詢問了關於這個df的5個問題。我們很樂意爲您提供幫助,但不會爲您完成全部任務,您計劃如何學習? –

回答

0

我不能重現使用熊貓0.19.2您的問題:

In [16]: df['?_Flag'] = np.where(df['Category'].str.contains("\?"), 'Y', '') 

In [17]: df 
Out[17]: 
     ID  Category ?_Flag 
0 
1 19352 
2 21014 
3  2619  ???? ?????  Y 
4  2621    ? ?  Y 
5  9566 
6  9686   ?? ?  Y 
7 61319 
8 68086 
9 69239 
10 69353   ?? ?  Y 
11 69373 
12 69491    ? ?  Y 
13 69535 ???? ????? ???  Y 
14 69582    ? ?  Y 
15 69691   ?? ?  Y 
16 174572    A 
17 174637    A 
18 174646    B 
19 175286    B 
20 175390    C 
+0

Curios:爲什麼會使用正則表達式標誌空白列? –

+0

@ juanpa.arrivillaga,我在我的答案中添加了一個解釋 - 請檢查 – MaxU

+0

正確,但他們使用了轉義序列,所以它應該沒有關係。 –