2015-08-26 13 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 ]) 
相关问题