2014-10-28 116 views
0

這是我在stackoverflow上的第一個問題!請耐心等待:)用熊貓追加字符串到一些數據幀行

我想添加一個文本到DataFrame中的某些行。原始數據幀如下所示:

In [1]: import pandas as pd 

In [2]: df = pd.DataFrame({'Name and rooms' : ['Excalibur: 1 room','John: 2 rooms','1 room','Lucas: 5 rooms','4 rooms','Jeremy: 1 room']}) 

In [3]: df 
Out[3]: 
     Name and rooms 
0 Excalibur: 1 room 
1  John: 2 rooms 
2    1 room 
3  Lucas: 5 rooms 
4   4 rooms 
5  Jeremy: 1 room 

正如您所看到的,有些行的名稱已丟失。我想添加一些固定的字符串(比如「Whatever:」,不管是什麼字符串)到沒有名字的行(在本例中是第2行和第4行)。最終的數據集應該是這樣的:

In [11]: df 
Out[11]: 
     Name and rooms 
0 Excalibur: 1 room 
1  John: 2 rooms 
2  Whatever: 1 room 
3  Lucas: 5 rooms 
4  Whatever: 4 rooms 
5  Jeremy: 1 room 

我是新的熊貓/ Python的,所以任何幫助將是非常讚賞。

謝謝!

回答

1

使用矢量化str方法contains創建一個布爾面具和使用否定運算符~,它傳遞給loc和前面加上你的字符串的當前值:

In [83]: 

df.loc[~df['Name and rooms'].str.contains(':'),'Name and rooms'] = 'Whatever: ' + df['Name and rooms'] 
df 
Out[83]: 
     Name and rooms 
0 Excalibur: 1 room 
1  John: 2 rooms 
2 Whatever: 1 room 
3  Lucas: 5 rooms 
4 Whatever: 4 rooms 
5  Jeremy: 1 room