当不知道列数时如何将多列中的值连接到一列中
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
是为了避免删除新列
我的应用程序在不同的列中保存了不确定数量的值。结果,我有一个数据框,开头有一定数量的列,但是从特定的列(我知道)我将有不确定数量的列保存相同的数据
示例:
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
是为了避免删除新列