猿问

逐行从 DataFrame 中提取列名到 Series

我想将列表中的列名提取到按每行中的值过滤的系列中


In [1]: import pandas as pd   


In [2]: df =pd.DataFrame({'colA':[1,0,1], 'colB':[0,0,1], 'colC':[1,0,0]})    


In [3]: print(df)


   colA  colB  colC

0     1     0     1

1     0     0     0

2     1     1     0

结果系列应如下所示:


0    [colA, colC]

1              []

2    [colA, colB]

dtype: object

这是我想出的折磨人的解决方案:


In [4]: df2 = df.T


In [5]: l = [df2[df2[i]>0].index.values.tolist() for i in range(3)]


In [6]: print(pd.Series(l))


0    [colA, colC]

1              []

2    [colA, colB]

dtype: object

有没有一种不那么折磨人的方式来做到这一点?


一只甜甜圈
浏览 278回答 1
1回答

慕尼黑5688855

您可以np.where假设您的数据帧由 0 和 1 组成,并从结果创建一个系列:x = np.where(df,df.columns,'')pd.Series([' '.join(i).split() for i in x])0    [colA, colC]1              []2    [colA, colB]
随时随地看视频慕课网APP

相关分类

Python
我要回答