在python中将多个列值作为列表合并到一列中

在python中将多个列值作为列表合并到一列中,python,pandas,Python,Pandas,我有这样的数据框架: A B C D E F 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 我通过以下方式合并C之后的列来创建新列: df['new'] = df[df.columns[3:]].apply(lambda x: ','.join(x.dropna().astype(str)), axis=1) 所以,现在的结果是: A B C D E F ne

我有这样的数据框架:

A   B   C   D   E   F
1   2   3   4   5   6
7   8   9   10  11  12
13  14  15  16  17  18
我通过以下方式合并
C
之后的列来创建新列:

df['new'] = df[df.columns[3:]].apply(lambda x: ','.join(x.dropna().astype(str)), axis=1)
所以,现在的结果是:

A   B   C   D   E   F   new
1   2   3   4   5   6   4,5,6
7   8   9   10  11  12  10,11,12
13  14  15  16  17  18  16,17,18
但我想要新的列作为列表。如下图所示:

A   B   C   D   E   F   new
1   2   3   4   5   6   [4,5,6]
7   8   9   10  11  12  [10,11,12]
13  14  15  16  17  18  [16,17,18]
我该怎么办?

让我们试一试

df['New'] = df.iloc[:,3:].agg(list,1)
df
    A   B   C   D   E   F           New
0   1   2   3   4   5   6     [4, 5, 6]
1   7   8   9  10  11  12  [10, 11, 12]
2  13  14  15  16  17  18  [16, 17, 18]
让我们试试

df['New'] = df.iloc[:,3:].agg(list,1)
df
    A   B   C   D   E   F           New
0   1   2   3   4   5   6     [4, 5, 6]
1   7   8   9  10  11  12  [10, 11, 12]
2  13  14  15  16  17  18  [16, 17, 18]

选择所需的列,转换为二维列表,然后将它们全部推入1个系列

df["new"] = df.loc[:, "D":"F"].to_numpy().tolist()

print(df)
    A   B   C   D   E   F           new
0   1   2   3   4   5   6     [4, 5, 6]
1   7   8   9  10  11  12  [10, 11, 12]
2  13  14  15  16  17  18  [16, 17, 18]

选择所需的列,转换为二维列表,然后将它们全部推入1个系列

df["new"] = df.loc[:, "D":"F"].to_numpy().tolist()

print(df)
    A   B   C   D   E   F           new
0   1   2   3   4   5   6     [4, 5, 6]
1   7   8   9  10  11  12  [10, 11, 12]
2  13  14  15  16  17  18  [16, 17, 18]

有趣的方法。您能解释一下agg(列表,1)正在做什么吗?agg行值到一个列表~axis=1表示检查行~有趣的方法。你能解释一下agg(列表,1)在做什么吗?agg行值到一个列表~axis=1意味着检查行~老实说,我不知道列的确切名称和计数,因此我只能使用@BEN_YO answer。无论如何,谢谢。老实说,我不知道栏目的确切名称和数量,因此我只能使用@BEN_-YO-answer。无论如何,谢谢。