如何用条件替换Pandas数据帧中所有列的所有值

pdu*_*ois 13 python pandas

我有以下数据框:

In [11]: import pandas as pd

In [12]: mydict = {'foo':[0, 0.3], 'bar':[1,0.55], 'qux': [0.3,4.1]}

In [13]: df = pd.DataFrame.from_dict(mydict, orient='index')

In [14]: df
Out[14]:
       0     1
qux  0.3  4.10
foo  0.0  0.30
bar  1.0  0.55
Run Code Online (Sandbox Code Playgroud)

我想要做的是用0替换所有小于1的值.产生:

       0     1
qux  0     4.10
foo  0     0
bar  1.0   0
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

EdC*_*ica 12

使用布尔索引并传递条件:

In [155]:
df[df<1] = 0
df
Out[155]:
     0    1
bar  1  0.0
foo  0  0.0
qux  0  4.1
Run Code Online (Sandbox Code Playgroud)

只是为了显示这里发生的事情,df < 1将返回一个布尔索引:

In [156]:
df < 1
Out[156]:
         0      1
bar  False   True
foo   True   True
qux   True  False
Run Code Online (Sandbox Code Playgroud)

然后,我们将其df作为掩码传递,然后可以分配新值,df[df<1]请参阅文档以获取更多示例