将 pandas 数据帧的所有列的整数替换为 True/False



我有一个带有整数的熊猫数据框。

我想用True替换 1,用数据框中的所有列替换 2False,以便仅使用布尔值制作数据框。

我以为我会尝试使用类似df[Col] = df[Col].astype(bool)的东西遍历所有列,但是当我在Col1上尝试时,它只是用True替换了Col1中的每个值,当它应该TrueTrueFalseTrue时。

感谢您的任何帮助!

import pandas as pd
data = {'Col1': [1,1,2,1],
'Col2': [2,2,1,1],
'Col3': [1,1,1,2],
'Col4': [2,1,2,2]
}
df = pd.DataFrame(data, columns = ['Col1', 'Col2', 'Col3', 'Col4'])

只需使用:

df == 1

输出:

Col1   Col2   Col3   Col4
0   True  False   True  False
1   True  False   True   True
2  False   True   True  False
3   True   True  False  False
import pandas as pd
data = {'Col1': [1,1,2,1],
'Col2': [2,2,1,1],
'Col3': [1,1,1,2],
'Col4': [2,1,2,2]
}
df = pd.DataFrame(data, columns = ['Col1', 'Col2', 'Col3', 'Col4'])
df = df.replace(1,True)
df = df.replace(2,False)
df

输出:

Col1    Col2    Col3    Col4
0   True    False   True    False
1   True    False   True    True
2   False   True    True    False
3   True    True    False   False

您可以使用df.replace.

df.replace([1,2],[True,False])

你来了:

>>> df == 1                      
Col1   Col2   Col3   Col4
0   True  False   True  False
1   True  False   True   True
2  False   True   True  False
3   True   True  False  False

问题是,在整数的上下文中,.astype(bool)将所有非零整数更改为 True,将所有零更改为 False。我将按如下方式使用map

df[Col] = df[Col].map({1:True, 2:False})

最新更新