gpt4 book ai didi

python - 如何仅将 dtype bool 列的 Pandas 数据框中的 True 和 False 映射到 'Yes' 和 'No'?

转载 作者:太空狗 更新时间:2023-10-30 00:31:10 25 4
gpt4 key购买 nike

我有一个 pandas 数据框 (v 0.20.3):

df = pd.DataFrame({'coname1': ['Apple','Yahoo'], 'coname2':['Apple', 'Google']})
df['eq'] = df.apply(lambda row: row['coname1'] == row['coname2'], axis=1).astype(bool)

coname1 coname2 eq
0 Apple Apple True
1 Yahoo Google False

如果我想将 True/False 替换为 'Yes'/'No',我可以运行这个:

df.replace({
True: 'Yes',
False: 'No'
})

coname1 coname2 eq
0 Apple Apple Yes
1 Yahoo Google No

这似乎完成了工作。但是,如果数据框只有一行且列中的值为 0/1,则它也将被替换,因为它被视为 boolean 值。

df1 = pd.DataFrame({'coname1': [1], 'coname2':['Google'], 'coname3':[777]})
df1['eq'] = True

coname1 coname2 coname3 eq
0 1 Google 777 True

df1.replace({
True: 'Yes',
False: 'No'
})

coname1 coname2 coname3 eq
0 Yes Google 777 Yes

我想将 True/False 映射到数据框中所有 dtype 列的 Yes/No boolean

我如何告诉 pandas 仅对 dtype bool 的列运行映射 True/False 到任意字符串没有明确指定列的名称,因为我可能事先不知道它们?

最佳答案

使用 dtypes 属性检查列是否为 boolean 值并基于该值进行过滤:

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'})

关于python - 如何仅将 dtype bool 列的 Pandas 数据框中的 True 和 False 映射到 'Yes' 和 'No'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45196626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com