python - 如果满足条件则替换行中的单元格

标签 python pandas dataframe

有没有办法实现“少、中、大”列。如果大于0就将ROW替换为1。那么顶行会变成?

                  Conc      Less    Middle   Greater
Date                                                
2005-03-02 00:00  10.3  0.000000  1         1

这是原图

                  Conc      Less    Middle   Greater
Date                                                
2005-03-02 00:00  10.3  0.000000  0.083333  0.916667

2005-03-02 01:00  14.1  0.000000  0.750000  0.250000

2005-03-02 02:00   7.0  0.000000  0.833333  0.166667

2005-03-02 03:00   7.0  0.000000  1.000000  0.000000

2005-03-02 04:00   7.2  0.000000  1.000000  0.000000

2005-03-02 06:00   6.6  0.333333  0.666667  0.000000

2005-03-02 07:00   6.6  0.416667  0.583333  0.000000

我已经尝试过:

df.loc[df['Less']>0:]=1
df.loc[df['Less']==0:]=0

但是显示为红色并显示 False True (在正确的位置)并且: 数据类型: bool 、无、无)

我也尝试过:循环遍历:

for line in df['Less']:
    if df['Less'] >0:
        df['Less']=1

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

最佳答案

您可以将 loc 与 bool 条件一起使用:

In [250]:
df.loc[df['Less'] > 0, 'Less'] = 1
df

Out[250]:
                     Conc  Less    Middle   Greater
Date                                               
2005-03-02 00:00:00  10.3   0.0  0.083333  0.916667
2005-03-02 01:00:00  14.1   0.0  0.750000  0.250000
2005-03-02 02:00:00   7.0   0.0  0.833333  0.166667
2005-03-02 03:00:00   7.0   0.0  1.000000  0.000000
2005-03-02 04:00:00   7.2   0.0  1.000000  0.000000
2005-03-02 06:00:00   6.6   1.0  0.666667  0.000000
2005-03-02 07:00:00   6.6   1.0  0.583333  0.000000

df.loc[df['Less']>0:] 是无效语法,您需要使用逗号并传递感兴趣的列名称列表

您的for循环版本:

for line in df['Less']:
    if df['Less'] >0:
        df['Less']=1

无效,因为 if 不理解如何解释 bool 值数组,因此如果您执行 if (df['Less'] >0).all( )if (df['Less'] >0).any() 那么它会很高兴,但无论如何它没有意义,因为你正在逐行迭代但是然后测试整个 df 这是浪费。

关于python - 如果满足条件则替换行中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38100998/

相关文章:

python - 如何过滤数据框以便在特定时间每天发生一次

python - 如何将 Pandas 数据框中的多列弹出到新的数据框中?

linux - 数据框中的列表列表

python - 如何将多个 Pandas DataFrame 存储在一起

python - Python中如何根据占用的端口获取一个socket fd?

python - 从表单提交数据到 Django View

Python:socket.rcvfrom() 锁定所有脚本

python - GAE 项目的自定义用户身份验证

python - 尝试根据条件语句编写二进制变量

r - 在 dplyr mutate 中对具有特定模式的变量求和