如何在Python dfply上对startswith()使用conditional语句?

2024-05-15 22:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用包dfply在Python上进行数据争用。在

我想从数据集的'FC06'创建一个新变量“a06”,以便:

  • a06=1,如果FC06[i]以字符“1”开头(例如:FC06[i]=173)
  • a06=2,如果FC06[i]以字符“2”开头
  • 如果FC06[i]=NaN,则a06=NaN

例如,对于输入:

df = pd.DataFrame({'FC06':[173,170,220,float('nan'),110,230,float('nan')]})

我想得到输出:

^{pr2}$

在R上,可通过以下方式获得:

data_a %>% mutate(a06 = ifelse(substr(FC06,1,1)=="1",1,ifelse(substr(FC06,1,1)=="1",2,NaN)))

但我不知道如何使用Python来实现这一点。在

我实现了第一个版本,只有两个备选方案:NaN或1,以及:

data_a >>        mutate(a06=if_else((X['FC06'].apply(pd.isnull)),float('nan'),1)

但是我不知道如何根据FC06的第一个字符来区分结果。在

(我尝试了如下方法:

(data_a >> mutate(a06=if_else(X['FC06'].apply(pd.isnull),float('nan'),if_else(X['FC06'].apply(str)[0]=='1',1,2))))

但是没有成功: -[0]不适用于获取第一个字符 -和/或str()不能与apply一起使用(两者都不能str.startswith(‘1’)

有人知道如何解决这种情况吗?在

或者另一个在Python上实现的包?在

谢谢你!!在


Tags: 数据dataifnanfloat字符elsepd
1条回答
网友
1楼 · 发布于 2024-05-15 22:22:37

如果只有3位数字,则可以使用楼层划分:

df['FC06'] //= 100

如果有字符串,可以使用pd.Series.mask

^{pr2}$

你会注意到你的整数变成了浮点数。这是由于NaN值的存在而造成的,这些值被认为是float。一般来说,这不应该是个问题。在

相关问题 更多 >