2015-08-26 18 views
1

我有一個熊貓數據幀結構如下:+1按鈕添加到每個項目在熊貓數據幀以逗號分隔字符串

| ID |  Start | Stop | 
________________________________________ 
|  1 | 1,2,3,4 | 5,6,7,7 | 
|  2 | 100,101 | 200,201 | 

對於數據幀的每一行,我想1添加到每個「開始」列中的值。 Start列的dtype是'object'。

所需的輸出看起來是這樣的:

| ID |  Start | Stop | 
________________________________________ 
|  1 | 2,3,4,5 | 5,6,7,7 | 
|  2 | 101,102 | 200,201 | 

我試過以下(下面的許多版本),卻得到一個錯誤,說明,類型錯誤:不能連接「海峽」和「廉政」對象,:

df['test'] = [str(x + 1) for x in df['Start']] 

我試圖鑄造柱作爲int,但「與底座10無效字面長期(): '得到101102':

df['test'] = [int(x) + 1 for x in df['start'].astype(int)] 

我試圖使用str.split()將字段轉換爲列表,然後將每個項目轉換爲整數:

在此先感謝!

+1

你嘗試'DF [ '測試'] = [STR(INT( x)+ 1)for df ['Start']]?? –

+0

我做了,它會拋出相同的'無效的文字長()與基10:...'錯誤。 – SummerEla

+0

當你使用'split'和'int'時,錯誤是什麼?完整的錯誤,沒有省略號。 –

回答

1

df['Start']是全系列,讓你不得不重複這一點,然後分裂:

new_series = [] 
for x in df['Start']: 
    value_list = [] 
    for y in x.rstrip(',').split(','): 
     value_list.append(str(int(y) + 1)) 
    new_series.append(','.join(value_list)) 
df['test'] = new_series 
+0

謝謝,但我仍然得到這個錯誤: value_list.append(str(int(y)+ 1)) ValueError:無效文字爲int()與基地10:'' – SummerEla

+1

你有沒有數據,在你的例子中包括?這可能是一個搖擺的逗號造成的''''。 –

+1

非常感謝Paulo!有尾隨的逗號。我在列上運行rstrip(','),然後運行你的函數並且它完美地工作。您是否可以將此步驟添加到您的功能中,以便將其標記爲答案? – SummerEla

1

通過告訴你,你不能連接字符串和int對象,你知道x必須是一個字符串。你可以通過將x加1來解決這個問題。所以str(x+1)變成str(int(x)+1)

df['test'] = [str(int(x) + 1) for x in df['Start']] 
+0

謝謝,我試過了,得到了,「AttributeError:'Series'對象沒有'split'屬性。所以我添加了'str.split(',')並得到了「TypeError:int()參數必須是一個字符串或一個數字,而不是'list'」 – SummerEla

+0

沒有拆分(','),我得到「爲int()與基地10「錯誤。我很難過! – SummerEla

0
df = pd.DataFrame({'Start' : [ [1 , 2, 3 , 4] , [100 , 101] ] , 'Stop' : [ [5 , 6 , 7 ,7] , [200,201] ] }) 
df.Start = df.Start.apply(lambda x : [y + 1 for y in x ]) 
相關問題