使用apply时,将列表分配给单个pandas dataframe列

时间:2017-10-27 06:04:36

标签: python pandas

我在pandas数据框中有一个列,格式为:“A,B,C,D”,我想将它作为列表分割而不是[A,B,C,D]。我使用下面的代码进行转换但是我一直收到以下错误: ValueError:传递值的形状是(58110,3),索引暗示(58110,36)

def convert_list(df):    
  return  df['textlist'].split(',')


df['newcol']= df.apply(lambda x:convert_list(x),axis=1)

2 个答案:

答案 0 :(得分:1)

您需要str.split

df['newcol'] = df['textlist'].str.split(',')

答案 1 :(得分:1)

设置

df = pd.DataFrame(dict(textlist=['a,b,c,d']))

df

  textlist
0  a,b,c,d
@ jezrael的答案是完美的!不需要做任何不同的事情。

df.assign(newcol=df.textlist.str.split(','))

然而,你的功能(只有一个轻微的mod)会像这样工作:

def convert_list(df):    
    return  df['textlist'].str.split(',')

df.assign(newcol=convert_list)

  textlist        newcol
0  a,b,c,d  [a, b, c, d]

你也可以使用numpy的np.core.defchararray.split

df.assign(newcol=np.core.defchararray.split(df.textlist.values.astype(str), ','))

  textlist        newcol
0  a,b,c,d  [a, b, c, d]