【问题标题】:How to replace all value in all columns in a Pandas dataframe with condition如何用条件替换 Pandas 数据框中所有列中的所有值
【发布时间】:2015-01-09 17:38:12
【问题描述】:

我有以下数据框:

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

我想要做的是将所有小于 1 的值替换为 0。 产量:

       0     1
qux  0     4.10
foo  0     0
bar  1.0   0

我怎样才能做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

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

    In [155]:
    df[df<1] = 0
    df
    Out[155]:
         0    1
    bar  1  0.0
    foo  0  0.0
    qux  0  4.1
    

    只是为了显示这里发生了什么,执行df &lt; 1 将返回一个布尔索引:

    In [156]:
    df < 1
    Out[156]:
             0      1
    bar  False   True
    foo   True   True
    qux   True  False
    

    然后我们将其作为掩码传递给df,然后可以将新值分配为df[df&lt;1],更多示例请参见docs

    【讨论】:

    • 你如何做到这一点而不是就地?
    • @O.rka 我不明白你的问题,如果你不分配结果,那么不会改变 df
    • 很多函数都有 inplace=False ,它不会改变原始对象。有没有类似的方法?
    • @O.rka 但没有调用任何函数,您要么分配给 df,要么不使用 =
    • @O.rka 只是为了完整性。要不使其到位,请创建数据框的副本。 dfc = df.copy() 并与之合作。
    猜你喜欢
    • 2015-10-09
    • 2022-01-10
    • 2022-12-22
    • 2021-10-15
    • 2019-12-05
    • 2018-02-21
    • 1970-01-01
    • 2022-10-14
    • 2018-03-18
    相关资源
    最近更新 更多