gpt4 book ai didi

python - 给定条件,修改数据框的值

转载 作者:行者123 更新时间:2023-11-28 20:54:59 24 4
gpt4 key购买 nike

我有一个数据框,其中包含最多一个字母和三个数字的代码,例如:A478。有些代码只有一位或两位数,但我需要在所有三位数字的值前加一个点,以将它们转换为以下形式:

A213 到 A21.3

简而言之,我需要这样改造df:

id code1 code2 code3 code4
0 A099 B25 A022 NaN
1 B21 J2 Z23 H355
2 C212 C03 NaN NaN

id code1 code2 code3 code4
0 A09.9 B25 A02.2 NaN
1 B21 J2 Z23 H35.5
2 C21.2 C03 NaN NaN

我试过使用类似这样的东西,但我得到了一个无效的语法,所以我不知道如何评估只有当它有三位数(或 4 str)时它发生的条件。

df.apply(lambda x: x.str[:3]+'.'+x.str[3:] if len(x) == 4)

最佳答案

对于所有“代码”列,将 lambda 映射为 applymap如果元素不是 NaN 且其长度为 4,则插入点的元素:

df.iloc[:,1:] = df.iloc[:,1:].applymap(lambda x: x[:3]+'.'+x[3:] if not pd.isna(x) and len(x) == 4 else x)

结果:

   id  code1 code2  code3  code4
0 0 A09.9 B25 A02.2 NaN
1 1 B21 J2 Z23 H35.5
2 2 C21.2 C03 NaN NaN

PS:如果 id 是索引,您可以直接在整个数据帧上 df.applymap()

关于python - 给定条件,修改数据框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57908593/

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