【发布时间】:2018-02-07 10:35:38
【问题描述】:
我有一个数据框,其中 a、b、c 列包含整数和字符串,如下所示:
a | b | c
0.82 | 1.17 | 2.05
0.02 | ND | ND
2.00 | 1.08 | 0.02*
我需要找到每一行的最小/最大值,并使用相应的值填充标题为“Min”/“Max”的新第四/第五列,同时将 ND 视为最小值。我可以用
找到第一行的最小值/最大值df.loc[["a", "b", "c"]].min(axis=1)
#and max(axis=1)
和第二个一起工作
df.loc[((data["a"].isin(["ND"])) | (data["b"].isin(["ND"])) |
(data["c"].isin(["ND"])), "Min"] = "ND"
但不知道我应该为第三行的 0.02* 做什么。我需要对整数进行比较,但在填充“Min”列时保持值,所以最终结果看起来像
a | b | c | Min | Max
0.82 | 1.17 | 2.05 | 0.82 | 2.05
0.02 | ND | ND | ND | 0.02
2.00 | 1.08 | 0.02* | 0.02* | 2
我的整个数据框中有 200 多个带有 * 的值,因此无法选择手动替换。我考虑先删除 *,但不确定在必须填充最小/最大列时如何恢复它们。
如果有人对此有解决方法,我们将不胜感激,谢谢。
【问题讨论】:
-
看起来在这些列中,您正在按字典顺序比较字符串。
标签: python string pandas integer nan