当不知道列数时如何将多列中的值连接到一列中

How to concatenate values from many columns into one column when one doesn't know the number of columns will have

我的应用程序在不同的列中保存了不确定数量的值。结果,我有一个数据框,开头有一定数量的列,但是从特定的列(我知道)我将有不确定数量的列保存相同的数据

示例:

known1  known2 know3 unknow1 unknow2 unknow3 ...
1       3      3     data    data2   data3

我想得到的结果应该是这样的

known1  known2 know3 all_unknow 
1       3      3     data,data2,data3

当我不知道未知列的数量但我所知道的是这将从第 4 列开始(在此示例中)发生时,我该如何执行此操作。

IIUC,使用 filter 到 select 关键字列:

cols = list(df.filter(like='unknow'))
# ['unknow1', 'unknow2', 'unknow3']

df['all_unknow'] = df[cols].apply(','.join, axis=1)
df = df.drop(columns=cols)

或从第 4 列开始的所有列:

cols = df.columns[3:]

df['all_unknow'] = df[cols].apply(','.join, axis=1)
df = df.drop(columns=cols)

输出:

   known1  known2  know3        all_unknow
0       1       3      3  data,data2,data3
df['all_unknown'] = df.iloc[:, 3:].apply(','.join, axis=1)

如果您还想删除第 4 列之后的所有列:

cols = df.columns[3:-1]
df.drop(cols, axis=1)

-1 是为了避免删除新列