2014-11-25 130 views
12

我有以下數據框:熊貓替換值

 col 
0 pre 
1 post 
2 a 
3 b 
4 post 
5 pre 
6 pre 

我想,以取代在數據幀的所有行不包含「預」,成爲「nonpre」,所以數據幀的樣子:

 col 
0 pre 
1 nonpre 
2 nonpre 
3 nonpre 
4 nonpre 
5 pre 
6 pre 

我可以使用字典和熊貓替換,但是我只想選擇不是'pre'的元素並用'nonpre'替換它們。有沒有更好的方法來做到這一點,而不是在字典中列出所有可能的col值?

回答

21

只要你舒服的df.loc[condition, column]語法,大熊貓允許的話,這是很容易,只是做df['col'] != 'pre'發現,應該改變所有行:

df['col2'] = df['col'] 
df.loc[df['col'] != 'pre', 'col2'] = 'nonpre' 

df 
Out[7]: 
    col col2 
0 pre  pre 
1 post nonpre 
2  a nonpre 
3  b nonpre 
4 post nonpre 
5 pre  pre 
6 pre  pre 
+0

的感謝!使用.loc有什麼問題我應該警惕嗎? – user308827 2014-11-25 02:49:07

+1

不,''.loc'基本上是你想要獲得數據框中特定行和列集合時應該首先嚐試的。不確定您是否具有R的經驗,但它與R數據框的子集化語法非常類似。 – Marius 2014-11-25 02:51:39

4
df[df['col'].apply(lambda x: 'pre' not in x)] = 'nonpre'