我正在使用包 dfply 在 Python 上进行数据整理。
我想从数据集data_a的'FC06'创建一个新变量“a06”,这样:
- a06 = 1 如果 FC06[i] 以字符“1”开头(例如:FC06[i]=173)
- a06 = 2 如果 FC06[i] 以字符“2”开头
- a06 = NaN 如果 FC06[i] = NaN
例如,输入:
df = pd.DataFrame({'FC06':[173,170,220,float('nan'),110,230,float('nan')]})
我想得到输出:
df1= pd.DataFrame({'a06':[1,1,2,float('nan'),1,2,float('nan')]})
在 R 上,它将通过以下方式获得:
data_a %>% mutate(a06 = ifelse(substr(FC06,1,1)=="1",1,ifelse(substr(FC06,1,1)=="1",2,NaN)))
但我不知道如何用 Python 做到这一点。
我实现了第一个版本,只有 2 个选项: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 上执行此操作的包?
谢谢 !!