拼接指定的两列:
    方法一:df["拼接"] = df["列1"] + "," + df["列2"]
    方法二:df["拼接"] = df.列1.str.cat(df.列2)
    如果拼接的列中有非字符型,比如数字,需要用map(str)转为字符型,为保险起见,对所有列进行这样的转换:
    方法一:df["拼接"] = df["列1"].map(str) + "," + df["列2"].map(str)
    方法二:df["拼接"] = df['列1'].astype(str) + df['列2'].astype(str)

    难点来了,如果只给出拼接列名的列表,列表元素个数不固定,连接符需要方便修改,那么按照上面的做法就很不方便了,列数一多,代码长度越大,后面更改起来也不方便。

    思路:构造函数,列表遍历
    方法一:不足,没有对可能的数值列字符化
    df['拼接'] = df[['列1', '列2', ...]].agg('-'.join, axis=1)
    方法二:最佳方案,可能效率有所下降

    1. def df_concat_col(df, cols: list, joiner="", new_col="拼接"):
    2. """
    3. dataframe拼接多列
    4. :param df: 原dataframe
    5. :param cols: 拼接的列
    6. :param joiner: 连接符,默认空
    7. :param new_col: 拼接生成的新列名
    8. """
    9. df[new_col] = df[cols[0]]
    10. for i in range(1, len(cols)):
    11. df[new_col] = df[new_col].map(str) + joiner + df[cols[i]].map(str)
    12. return df

    各种方法效率对比
    image.png