I want to convert following values using loop.
{'Id':2, 'A':"no", 'B':"no", 'C':"no", 'D':"yes"},
{'Id':3, 'A':"yes", 'B':"yes", 'C':"yes", 'D':"no"},
{'Id':4, 'A':"yes", 'B':"no", 'C':"yes", 'D':"no"},
{'Id':5, 'A':"no", 'B':"yes", 'C':"no", 'D':"yes"}]
I have used 'map' for indivisual rows. But I want to loop it.
df['B'] = df['B'].map({"yes": "B", "no": "-"})
df['C'] = df['C'].map({"yes": "C", "no": "-"})
df['D'] = df['D'].map({"yes": "D", "no": "-"})
(Link to result)https://ibb.co/JsJjqZr
Help me to use loop please.
解决方案
You can use this solution:
import pandas as pd
x = pd.DataFrame([{'Id':2, 'A':"no", 'B':"no", 'C':"no", 'D':"yes"},
{'Id':3, 'A':"yes", 'B':"yes", 'C':"yes", 'D':"no"},
{'Id':4, 'A':"yes", 'B':"no", 'C':"yes", 'D':"no"},
{'Id':5, 'A':"no", 'B':"yes", 'C':"no", 'D':"yes"}])
x.set_index('Id')
headers = x.columns.to_list()
for col in headers:
x[col] = x[col].map({"yes":col, "no":"-"})