擅长:python、mysql、java
<p>试试这个。。你知道吗</p>
<p>这是从<a href="https://stackoverflow.com/questions/37032043/how-to-replace-a-value-in-a-pandas-dataframe-with-column-name-based-on-a-conditi">linked post</a>借用的</p>
<h2>数据帧示例:</h2>
<pre><code>>>> df
A B C D
Id
2 no no no yes
3 yes yes yes no
4 yes no yes no
5 no yes no yes
</code></pre>
<h2>解决方案:</h2>
<pre><code>>>> df.loc[:, 'A':'D'].replace('yes', pd.Series(df.columns, df.columns)).replace('no', '-')
A B C D
Id
2 - - - D
3 A B C -
4 A - C -
5 - B - D
</code></pre>
<p>另一个解决方案是@–Quang Hoang提到的。。你知道吗</p>
<pre><code>>>> for col in 'ABCD':
... df[col] = df[col].map({'yes':col, 'no':'-'})
...
>>> df
A B C D
Id
2 - - - D
3 A B C -
4 A - C -
5 - B - D
</code></pre>
<p>或者</p>
<pre><code>>>> for cell in df[['A','B','C','D']].columns:
... df[cell].replace({'yes':col, 'no':'-'}, inplace=True)
...
>>> df
A B C D
Id
2 - - - D
3 D D D -
4 D - D -
5 - D - D
</code></pre>