使用dtypes属性检查列是否为布尔值并根据该值进行过滤:
df = pd.DataFrame({'A': [0, 1], 'B': ['x', 'y'],
'C': [True, False], 'D': [False, True]})
df
Out:
A B C D
0 0 x True False
1 1 y False True
bool_cols = df.columns[df.dtypes == 'bool']
df[bool_cols] = df[bool_cols].replace({True: 'Yes', False: 'No'})
df
Out:
A B C D
0 0 x Yes No
1 1 y No Yes
我认为最快的方法是在循环中使用map:
for col in df.columns[df.dtypes == 'bool']:
df[col] = df[col].map({True: 'Yes', False: 'No'})