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

时间:2019-08-08 23:48:58

标签: python pandas dataframe

我想将3列合并为一个列。我尝试更改列类型。但是,我做不到。

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

预期输出:ABC列{131, 241, 441}

我的输入是这样的:

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的类型似乎是对象,我无法通过strint进行更改。

df['ABC'].apply(str)

此外,我意识到A,B,C列中存在NaN值。甚至可以将它们与NaN值合并吗?

2 个答案:

答案 0 :(得分:3)


# Example
import pandas as pd
import numpy as np

df = pd.DataFrame()

# Considering NaN's in the data-frame
df['colA'] = [1,2,4, np.NaN,5]
df['colB'] = [3,4,4,3,np.NaN]
df['colC'] = [1,1,1,4,1]

# Using pd.isna() to check for NaN values in the columns
df['colA'] = df['colA'].apply(lambda x: x if pd.isna(x) else str(int(x)))
df['colB'] = df['colB'].apply(lambda x: x if pd.isna(x) else str(int(x)))
df['colC'] = df['colC'].apply(lambda x: x if pd.isna(x) else str(int(x)))

# Filling the NaN values with a blank space
df = df.fillna('')

# Transform columns into string
df = df.astype(str)

# Concatenating all together
df['ABC'] = df.sum(axis=1)

答案 1 :(得分:3)

您的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