gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:43 25 4
gpt4 key购买 nike

有没有办法实现“少、中、大”列。如果大于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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com