将多列数据合并为一列

2024-10-03 11:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pandas读取csv文件,然后尝试用pandas将23列合并成一个新列。 我试过以下有没有lambda和没有测向分配地址:

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))

但是我遇到了一个限制,我只能将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: Wrong number of items passed 1249, placement implies 1

1249是我的CSV文件的行。你知道吗


Tags: 文件csvlambda代码目标pandasdf地址
1条回答
网友
1楼 · 发布于 2024-10-03 11:19:21

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

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

相关问题 更多 >