python-3.x - 如何根据特定条件替换 Pandas Dataframe 中特定列的特定值?

标签 python-3.x pandas dataframe

我有一个 Pandas 数据框,其中包含学生和他们获得的分数百分比。有些学生的分数显示为大于 100%。显然这些值是不正确的,我想用 NaN 替换所有大于 100% 的百分比值。

我已经尝试了一些代码,但并不能完全得到我想要的。

import numpy as np
import pandas as pd

new_DF = pd.DataFrame({'Student' : ['S1', 'S2', 'S3', 'S4', 'S5'],
                       'Percentages' : [85, 70, 101, 55, 120]})

#  Percentages  Student
#0          85       S1
#1          70       S2
#2         101       S3
#3          55       S4
#4         120       S5

new_DF[(new_DF.iloc[:, 0] > 100)] = np.NaN

#  Percentages  Student
#0        85.0       S1
#1        70.0       S2
#2         NaN      NaN
#3        55.0       S4
#4         NaN      NaN

如您所见,代码可以正常工作,但它实际上用 NaN 替换了百分比大于 100 的特定行中的所有值。我只想用 NaN 替换百分比列中大于 100 的值。有什么办法可以做到这一点吗?

最佳答案

尝试并使用 np.where :

new_DF.Percentages=np.where(new_DF.Percentages.gt(100),np.nan,new_DF.Percentages)

new_DF.loc[new_DF.Percentages.gt(100),'Percentages']=np.nan

print(new_DF)

  Student  Percentages
0      S1         85.0
1      S2         70.0
2      S3          NaN
3      S4         55.0
4      S5          NaN

关于python-3.x - 如何根据特定条件替换 Pandas Dataframe 中特定列的特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55316901/

相关文章:

python - 扁平化 pandas 数据框的最有效方法是什么?

python - 嵌套for循环与 Pandas 数据框

python-3.x - 打印在 map 中时不打印,Python

python - 无法导入 'keystoneauth1' ...尽管已安装?

python - Pandas :excel days360 等效项

python - 如何将一列中的文本拆分为多行?

python - 检查列中所有值的多个条件

python - 如何查找数组中的下一个最大值

python - 如何明智地连接多个列表元素

python - Pandas :按列值删除准重复项