在Python中二进制化float64 Pandas Dataframe

Sna*_*e_A 4 python dataframe pandas

我有一个带有各种列的Panda DF(每个列都表示一个词语中一个单词的频率).每行对应一个文档,每个都是float64类型.

例如:

word1 word2 word3
0.0   0.3   1.0
0.1   0.0   0.5
etc
Run Code Online (Sandbox Code Playgroud)

我想Binarize这个而不是频率最终用布尔值(0和1s DF)表示存在一个单词

所以上面的例子将转换为:

word1 word2 word3
0      1     1
1      0     1
etc
Run Code Online (Sandbox Code Playgroud)

我查看了get_dummies(),但输出不是预期的.

Alb*_*oso 5

转换为布尔值将导致True任何非零值 - 以及False任何零入口.如果然后转换为整数,则得到1和0.

import io
import pandas as pd

data = io.StringIO('''\
word1 word2 word3
0.0   0.3   1.0
0.1   0.0   0.5
''')
df = pd.read_csv(data, delim_whitespace=True)

res = df.astype(bool).astype(int)
print(res)
Run Code Online (Sandbox Code Playgroud)

输出:

   word1  word2  word3
0      0      1      1
1      1      0      1
Run Code Online (Sandbox Code Playgroud)