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