我有一个 Dataframe ,里面有很多虚拟变量,我不想有很多不同的虚拟列,我只想有一列,每行需要包含一个字符串,只有虚拟变量等于1。
index a b c 0 1 1 1 1 0 0 1
输出:
index dummies 0 ['a','b','c'] 1 ['c']
9lowa7mx1#
dummies = df.apply(lambda x: [col for col in df.columns if x[col] == 1], axis=1)
nwsw7zdq2#
您可以堆叠和使用groupby:
df.where(df.eq(1)).stack().reset_index(level=1).groupby(level=0)['level_1'].agg(list)
或:
df.mul(df.columns).where(lambda x: x.ne('')).stack().groupby(level=0).agg(list)
df.dot(df.columns + ',').str.rstrip(',').str.split(',')
0 [a, b, c] 1 [c] Name: level_1, dtype: object
2条答案
按热度按时间9lowa7mx1#
nwsw7zdq2#
您可以堆叠和使用groupby:
或:
或:
输出: