gpt4 book ai didi

python - 在包含整数和字符串混合的数据框中查找最小/最大值

转载 作者:行者123 更新时间:2023-12-01 13:30:57 25 4
gpt4 key购买 nike

我有一个数据框,其中 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 多个带有 * 的值,因此无法手动替换。我考虑过先删除 *,但不确定在必须填充最小/最大列时如何恢复它们。

如果有人对此有任何解决方法,我们将不胜感激,谢谢。

最佳答案

看来您需要对数据进行一些整理。几个 df.replace 调用应该可以做到这一点:

df = df.astype(str).replace('ND', np.nan)\
.replace('\*', '', regex=True).astype(float)
print(df)

a b c
0 0.82 1.17 2.05
1 0.02 NaN NaN
2 2.0 1.08 0.02

现在,应用 maxmin:

df['Max'] = df.max(1)
df['Min'] = df.min(1)

print(df)

a b c Max Min
0 0.82 1.17 2.05 2.05 0.82
1 0.02 NaN NaN 0.02 0.02
2 2.00 1.08 0.02 2.00 0.02

基于您的约束的更新:

dftemp = df.astype(str).replace('ND', -np.inf)\
.replace('\*', '', regex=True).astype(float)
df['Max'] = dftemp.max(1)
df['Min'] = dftemp.min(1).replace(-np.inf, 'ND')

print(df)
a b c Max Min
0 0.82 1.17 2.05 2.05 0.82
1 0.02 ND ND 0.02 ND
2 2.0 1.08 0.02* 2.00 0.02

关于python - 在包含整数和字符串混合的数据框中查找最小/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45948104/

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