将多列数据合并为一个熊猫

M·帕拉马斯

我正在使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章