连接列熊猫

时间:2021-05-12 09:43:25

标签: pandas dataframe

我创建了一个数据框,它根据将用作输入的数据而变化,因此这个 df 可以是 3 到 100 列之间的任何长度。我正在寻找一种只有 3 列的方法,其中所有后续列(无论数量如何,因为这是未知的)都连接在第三列中(一种带有 ',' 的列表)

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试:

df = (
    pd.concat(
        [df[df.columns[:2]],
         df[df.columns[2:]].apply(list, axis=1)],
        axis=1)
)

要过滤掉 NAN,您可以使用列表推导式:

import numpy as np

result = (
    pd.concat(
        [df[df.columns[:2]],
         df[df.columns[2:]].apply(lambda x: [i for i in x if i not in ['nan', 'NaN', 'None', np.NAN]], axis=1)],
        axis=1)
)

如果您想要逗号分隔值而不是列表,请使用:

import numpy as np

result = pd.concat(
    [
        df[df.columns[:2]],
        df[df.columns[2:]].apply(
            lambda x: ', '.join(
                i for i in x if i not in ['nan', 'NaN', 'None', np.NAN]
            ),
            axis=1,
        ),
    ],
    axis=1,
)