我使用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文件的行。
答案 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