【发布时间】:2018-08-13 12:45:36
【问题描述】:
我正在使用包 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 上使用另一个包?
谢谢!!
【问题讨论】:
标签: python pandas apply dplyr dfply