用 True/False 替换 pandas 数据框所有列的整数
Posted
技术标签:
【中文标题】用 True/False 替换 pandas 数据框所有列的整数【英文标题】:Replacing integers of all columns of a pandas dataframe with True/False 【发布时间】:2020-09-25 23:39:22 【问题描述】:我有一个带有整数的 pandas 数据框。
对于我的数据框中的所有列,我想用True
替换1 和用False
替换2,所以只用布尔值制作一个数据框。
我想我会尝试使用df[Col] = df[Col].astype(bool)
之类的东西来遍历所有列,但是当我在Col1
上尝试它时,它只是用True
替换了Col1
中的每个值。 True
、True
、False
、True
。
感谢您的帮助!
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'])
【问题讨论】:
【参考方案1】:只需使用:
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
【讨论】:
您的回答总是让我感到惊讶。 +1 @Ch3steR 谢谢。感谢您的评论。【参考方案2】: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
【讨论】:
【参考方案3】:您可以使用df.replace
。
df.replace([1,2],[True,False])
【讨论】:
【参考方案4】:给你:
>>> 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
【讨论】:
【参考方案5】:问题在于,在整数的上下文中,.astype(bool)
将所有非零整数更改为 True,将所有零更改为 False。我会使用map
如下:
df[Col] = df[Col].map(1:True, 2:False)
【讨论】:
以上是关于用 True/False 替换 pandas 数据框所有列的整数的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 映射到 TRUE/FALSE 作为字符串,而不是布尔值
使用 np.where() 在 pandas 数据框中将 True/False 值更改为离散值
Python/Pandas,.count 不适用于更大的数据框