gpt4 book ai didi

python - Pandas:根据更复杂的标准选择和修改数据框

转载 作者:太空狗 更新时间:2023-10-29 18:16:20 25 4
gpt4 key购买 nike

我在看 thisthis线程,虽然我的问题并没有太大不同,但它有一些不同之处。我有一个充满 floats 的数据框,我想用字符串替换它。说:

      A     B       C
A 0 1.5 13
B 0.5 100.2 7.3
C 1.3 34 0.01

对于这张表,我想用几个条件替换,但只有第一个替换有效:

df[df<1]='N' # Works
df[(df>1)&(df<10)]#='L' # Doesn't work
df[(df>10)&(df<50)]='M' # Doesn't work
df[df>50]='H' # Doesn't work

如果我改为根据 float 选择第二行,仍然不起作用:

((df.applymap(type)==float) & (df<10) & (df>1)) #Doesn't work

我想知道如何在此处或任何其他方式应用 pd.DataFrame().mask。我该如何解决?

或者,我知道我可以逐列阅读并在每个系列上应用替换,但这似乎有点适得其反

编辑:谁能解释为什么上面的 4 个简单作业不起作用?

最佳答案

使用numpy.select使用 DataFrame 构造函数:

m1 = df < 1
m2 = (df>1)&(df<10)
m3 = (df>10)&(df<50)
m4 = df>5

vals = list('NLMH')

df = pd.DataFrame(np.select([m1,m2,m3,m4], vals), index=df.index, columns=df.columns)
print (df)
A B C
A N L M
B N H L
C L M N

关于python - Pandas:根据更复杂的标准选择和修改数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50605498/

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