将多列数据合并为一个pandas

时间:2018-04-19 10:57:24

标签: python python-2.7 pandas dataframe

我使用pandas读取csv文件,然后尝试将23列合并到一个带有pandas的新列中。 我有或没有lambda和没有df.assign:

尝试了以下
  

df = df.assign(X = lambda x:df.A.astype(str)+ df.B.astype(str)+ df.C.astype(str)+ df.D.astype(str)+ df.E.astype(str)+ df.F.astype(str)                    + df.G.astype(str)+ df.H.astype(str)+ df.I.astype(str)+ df.J.astype(str)+ df.K.astype(str)+ df.L. astype(STR)                    + df.M.astype(str)+ df.N.astype(str)+ df.O.astype(str)+ df.P.astype(str)+ df.Q.astype(str)+ df.R. astype(STR)                    + df.S.astype(str)+ df.T.astype(str)+ df.U.astype(str)+ df.V.astype(str)+ df.W.astype(str))

但是,我遇到了Pandas的限制,我只能将19列合并为一个。所以上面的代码只有在我取最后4列时才有效。 有什么工作吗?或者是熊猫限制吗? 以下行是我的数据示例,以X列为目标:

  

A,B,C,d,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X   GRB,D,43746,CL,S,19400,0A,00506100,3380810506105,MEN ANTIPERSP DEODTNT STICK,WES,550,1 ,,, MAS,20180403,100309,MAS,0,0,20180403,GRBD43746CLS194000A005061003380810506105MEN ANTIPERSP DEODTNT STICKWES5501MAS20180403100309MAS0020180403

当我尝试合并所有23列时,这是我得到的错误:

  

ValueError:传递的项目数量错误1249,展示位置意味着1

1249是我的CSV文件的行。

1 个答案:

答案 0 :(得分:0)

您可以通过简单地沿轴聚合来避免所有这些。

df = df.agg(lambda x: '/'.join(x), axis = 1)

示例

df = pd.DataFrame({'a':list('abcdef'), 'b': list('ghijkl')})
df = df.astype('str') #To Aggregate Strings

df['New Column'] = df.agg(lambda x: '/'.join(x), axis = 1)

In [43]: df
Out[43]: 
   a  b New Column
0  a  g        a/g
1  b  h        b/h
2  c  i        c/i
3  d  j        d/j
4  e  k        e/k
5  f  l        f/l