如何在Python中将这些列合并到单个列中?

如何在Python中将这些列合并到单个列中?,python,pandas,dataframe,Python,Pandas,Dataframe,我想把3列合并成一列。我已尝试更改列类型。但是,我做不到 例如,我有3列,例如A:{1,2,4},B:{3,4,4},C:{1,1,1} 预期输出:ABC列{131241441} 我的输入如下: df['ABC'] = df['A'].map(str) + df['B'].map(str) + df['C'].map(str) df.head() ABC {13.01.0 , 24.01.0, 44.01.0} ABC的类型似乎是对象,我无法通过str,int进行更改 df['ABC'].

我想把3列合并成一列。我已尝试更改列类型。但是,我做不到

例如,我有3列,例如
A:{1,2,4},B:{3,4,4},C:{1,1,1}

预期输出:ABC列
{131241441}

我的输入如下:

df['ABC'] = df['A'].map(str) + df['B'].map(str) + df['C'].map(str)

df.head()

ABC {13.01.0 , 24.01.0, 44.01.0}
ABC的类型似乎是对象,我无法通过
str
int
进行更改

df['ABC'].apply(str)
此外,我意识到在A、B、C列中有NaN值。即使使用NaN值也可以合并这些值吗?


#范例
作为pd进口熊猫
将numpy作为np导入
df=pd.DataFrame()
#在数据框架中考虑NaN
df['colA']=[1,2,4,np.NaN,5]
df['colB']=[3,4,4,3,np.NaN]
df['colC']=[1,1,1,4,1]
#使用pd.isna()检查列中的NaN值
df['colA']=df['colA'].apply(如果pd.isna(x)else str(int(x)),则lambda x:x)
df['colB']=df['colB'].apply(如果pd.isna(x)else str(int(x)),则lambda x:x)
df['colC']=df['colC'].apply(如果pd.isna(x)else str(int(x)),则lambda x:x)
#用空格填充NaN值
df=df.fillna(“”)
#将列转换为字符串
df=df.astype(str)
#连接在一起
df['ABC']=df.sum(轴=1)

解决NaN问题的方法可能是这样的,但现在NaN将为0

import numpy as np
df = pd.DataFrame({'A': [1,2,4, np.nan], 'B':[3,4,4,4], 'C':[1,np.nan,1, 3]})
df = df.replace(np.nan, 0, regex=True).astype(int).applymap(str)
df['ABC'] = df['A'] + df['B'] + df['C']
输出

    A   B   C   ABC
0   1   3   1   131
1   2   4   0   240
2   4   4   1   441
3   0   4   3   043

你应该看看这个。它基本上回答了相同的问题。@Pedreo:不,它没有。。。因为这个框架有NaNs@Omer您希望NAN如何包含在最终输出中?请更新您的问题,包括示例表中的NaN。否则你就得不到正确的答案answer@Mack123456真的!我将编辑我的答案。从技术上讲,根据当前给出的示例df,您的答案是正确的。数据帧中的问题是NaN。我不知道你的解决方案是如何解决这个问题的。由于NaN,数字为浮点数>1.0 3.0等。。这是我的问题。根据OP想要什么,您可以使用:df['ABC']=df.sum(axis=1).apply(int).astype(str)。这将给出一个str作为输出。