【问题标题】:Convert a pandas dataframe column based on condition [duplicate]根据条件转换熊猫数据框列[重复]
【发布时间】:2018-07-16 12:37:03
【问题描述】:

我有一个值范围从 0.0 到 1.0 的 pandas 列。

我想根据阈值将此列转换为二进制列(0 或 1),即如果值为

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    通过gt>)创建布尔掩码,然后将其转换为integers:

    df = pd.DataFrame({'col':[.4,0.5,.1]})
    
    threshold = .2
    df['new'] = df['col'].gt(threshold).astype(int)
    print (df)
       col  new
    0  0.4    1
    1  0.5    1
    2  0.1    0
    

    【讨论】:

      【解决方案2】:
      df.column = df.column > threshold
      df.column.astype(int)
      

      【讨论】:

        【解决方案3】:

        我会创建一个辅助列,然后遍历行并为每个单元格设置值。像这样的:

        import pandas as pd
        import numpy as np
        a = np.random.random_sample(5)
        df = pd.DataFrame({"A": a})
        df["Helper"] = ""
        for i in range(len(df)):
            if df.loc[i,"A"] <= 0.5:
                df.loc[i,"Helper"] = 0
            else:
                df.loc[i,"Helper"] = 1
        

        这会导致:

                  A  Helper
        0  0.114089       0
        1  0.309759       0
        2  0.158169       0
        3  0.444199       0
        4  0.645443       1
        

        【讨论】:

        • 不,不要重复!使用矢量化来完成这项简单的任务
        • 要添加到@Quickbeam2k1,应该避免在 pandas 中进行原始迭代。如果您确实需要迭代,请使用itertuples()
        猜你喜欢
        • 2023-02-02
        • 2019-09-15
        • 1970-01-01
        • 2023-02-21
        • 2017-10-04
        • 2022-01-23
        • 2020-01-15
        • 2021-12-28
        • 1970-01-01
        相关资源
        最近更新 更多