擅长:python、mysql、java
<p>您可以为列名添加分隔符,然后通过<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.rstrip.html" rel="nofollow noreferrer">^{<cd1>}</a>删除last并使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.split.html" rel="nofollow noreferrer">^{<cd2>}</a>:</p>
<pre><code>p = {'AA': [0,1,0,1], 'B': [1,1,1,1], 'C': [0,0,1,1], 'D': [1,1,1,0]}
df5 = pd.DataFrame(data=p)
cols = df5.dot(df5.columns + ',').str.rstrip(',').str.split(',').map(set).values.tolist()
print (cols)
[{'D', 'B'}, {'B', 'D', 'AA'}, {'C', 'D', 'B'}, {'B', 'AA', 'C'}]
</code></pre>
<p>另一种解决方案是使用numpy索引:</p>
<pre><code>c = df5.columns.to_numpy()
cols = [set(c[x]) for x in df5.to_numpy().astype(bool)]
print (cols)
[{'D', 'B'}, {'B', 'D', 'AA'}, {'C', 'D', 'B'}, {'B', 'AA', 'C'}]
</code></pre>