2016-12-22 64 views
0

DF1np.nan包含字符蟒蛇

Pet        
Dog-Ralph      
Cat         
2016-11-03 00:00:00 

我上面的數據幀,我想將「2016年11月3日00:00:00」值轉換成NaN值。由於它是唯一包含冒號的值,因此如何將該值轉換爲NaN,如下所示:

Pet        
Dog-Ralph      
Cat         
NaN 

感謝幫助!

+0

,因爲它包含一個冒號應該轉換爲'NaN'?是否只有一個值需要更改,或者所有包含冒號的值都應該更改爲NaN? –

+0

「寵物」列中的任何值。我的數據集中可能有多個具有此屬性。 – sschade

回答

2
import pandas as pd 
import numpy as np 

data = [{'name': 'Pet'},{'name':'Dog-Ralph'},{'name':'Cat'},{'name':'2016-11-03 00:00:00'}] 

df = pd.DataFrame.from_dict(data, orient='columns') 

df 

輸出:

name 
0 Pet 
1 Dog-Ralph 
2 Cat 
3 2016-11-03 00:00:00 

查找和使用替代np.where作爲它的更快:Read more

df['name'] = np.where(df['name'].str.contains(":"), np.nan, df['name']) 

df 

輸出:

name 
0 Pet 
1 Dog-Ralph 
2 Cat 
3 NaN 

見np.where性能細節:Why is np.where faster than pd.apply

+0

這工作!謝謝! – sschade

1

你可以試試這個:

df 

# Pet 
#0 Dog-Ralph 
#1 Cat 
#2 2016-11-03 00:00:00 

import numpy as np 
df[df["Pet"].notnull() & df['Pet'].str.contains(":")] = np.nan 
# replace any non-nan string with `colon` with np.nan  

df 
# Pet 
#0 Dog-Ralph 
#1 Cat 
#2 NaN 

或者,如果你只需要更換Pet柱:

df.loc[df["Pet"].notnull() & df["Pet"].str.contains(":"), "Pet"] = np.nan 
+0

當我運行此操作時,出現以下錯誤:ValueError:無法使用包含NA/NaN值的向量進行索引 – sschade

+0

檢查更新後的版本,可能是在列中有一些缺失的值,請使用'notnull()'轉換他們去'假'。 – Psidom

+0

這些都沒有工作。 =/ – sschade