在不知道列和行的情况下替换pandas Dataframe中的某些值

2020年:

我想用Python替换我的Pandas数据框中的值。(用字符串替换浮点数)。我知道值本身,但不知道列或行,因此以后想用不同的输入来运行它。我有以下数据框:

     P1899       P3486      P4074      P3352       P3500      P3447
Time                                                                
1997  100.0   89.745739  85.198939  87.377584  114.755270  81.131599
1998  100.0  101.597557  83.468442  86.369083  106.031629  95.263796
1999  100.0   97.234551  91.262551  88.759609  104.539337  95.859980
2000  100.0  100.759918  74.236098  88.295711  103.739557  90.272329
2001  100.0   96.873469  86.075067  87.530995  106.371072  91.807542
2002  100.0   95.000000  90.313561  82.699342  109.279845  94.444444

现在我想用“ OVER”替换大于110的值,用“ UNDER”替换小于90的值。我使用了以下内容,因为使用for循环无法获得任何结果。我用了lambda:

annual_rainfall_perc = annual_rainfall_perc.apply(lambda x: np.where(x > 110, 2000, x))
annual_rainfall_perc = annual_rainfall_perc.apply(lambda x: np.where(x < 90, 'UNDER', round(x, 2)))

在这里,我将所有较大的值替换为2000,因为否则第二个lambda将无法检查包含浮点数和字符串的数据框...我的数据框现在如下所示:

     P1899   P3486  P4074  P3352   P3500  P3447
Time                                            
1997  100.0   Under  Under  Under  2000.0  Under
1998  100.0   101.6  Under  Under  106.03  95.26
1999  100.0   97.23  91.26  Under  104.54  95.86
2000  100.0  100.76  Under  Under  103.74  90.27
2001  100.0   96.87  Under  Under  106.37  91.81
2002  100.0    95.0  90.31  Under  109.28  94.44

所以现在我打算用'OVER'替换所有等于2000的值。我怎么做?

我试过了:

for x in annual_rainfall_perc:
    for i in x:
        if i == 2000:
            annual_rainfall_perc[x][i]= 'Over'
        else:
            annual_rainfall_perc=annual_rainfall_perc
print(annual_rainfall_perc)

但数据框中的任何内容都没有更改。还有另一种方法吗?

Stef:

使用非常简单mask

df.mask(df>110,'OVER').mask(df<90,'UNDER')

结果:

      P1899    P3486    P4074  P3352    P3500    P3447
Time                                                  
1997    100    UNDER    UNDER  UNDER     OVER    UNDER
1998    100  101.598    UNDER  UNDER  106.032  95.2638
1999    100  97.2346  91.2626  UNDER  104.539    95.86
2000    100   100.76    UNDER  UNDER   103.74  90.2723
2001    100  96.8735    UNDER  UNDER  106.371  91.8075
2002    100       95  90.3136  UNDER   109.28  94.4444

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以在不知道表的列的情况下从表中删除重复的行?

在不知道列数的情况下在pandas数据框中添加一行

在不知道AWK中确切位置的情况下替换缺失值

如果列中的一行在不知道列名的情况下包含“url”或“http”,如何删除列?

Python 和 Pandas - 在不知道文件名的情况下读取目录中唯一的 CSV 文件

如何在不知道索引的情况下替换 JavaScript 数组中的特定元素?

如何在不知道键的类型和值的类型的情况下遍历KeyValuePair的枚举

在不知道键的情况下快速引用字典键和值

在不知道类型的情况下从文件中读取

熊猫:在不知道列名的情况下重命名单个DataFrame列

在不知道列类型的情况下将NULL值转换为“ UNKNOWN”

在不知道对象变量的情况下从arraylist中查找和删除对象

在不知道字符数的情况下从StringBuilder中删除最后一行

如何在不知道列名的情况下从 mysql 查询中检索表行?

如何在不知道 Spark 中任何特定值的情况下根据 GroupBy 列的值选择列

如何在不知道JSON值的情况下动态解析某些JSON?

在不知道值的情况下检查python中几个变量的不等式

在不知道主表主键的情况下,在具有外键关系的表中插入2行

您可以在不知道MySQL中架构的情况下复制一行吗?

如何在不知道R中的ID的情况下基于唯一ID汇总列?

如何在不知道PHP中没有关闭列的情况下插入数据

在不知道第二列值的情况下,在同一列中查找共享相同值的列中的值

如何在不知道索引值名称的情况下打印数组的值

在不知道具体id的情况下获取data-*的值

在不知道键的情况下查找字典值的类型

如何在不知道键/值类型的情况下测试接口{}是否为映射?

在编译时不知道密钥的情况下解码JSON值

在不知道宏数量的情况下打印宏值

在调用方法之前不知道最大值的情况下如何编程进度?