我正在使用 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 列时才有效。有什么解决办法吗?还是 Pandas 的限制?以下行是我的数据示例,以 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 文件的行。
您可以通过简单地沿轴聚合来避免所有这些。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句