我在Pandas数据帧中有以下数据:
AIRPORT
EWR|JAX
EWR|BHX
EWR|BHX
EWR|BHX
EWR|BHX
Run Code Online (Sandbox Code Playgroud)
...是否有动态方式将其转换为:
AIRPORT EWR JAX BHX
EWR|JAX Y Y NULL
EWR|BHX Y NULL Y
Run Code Online (Sandbox Code Playgroud)
等等.如果我想计算硬编码值,我知道如何做到这一点
df.assign(EWR = lambda x: x.TYPE.apply(lambda y: y.split('|').count('EWR')))
Run Code Online (Sandbox Code Playgroud)
但我希望不必为每个机场写这个代码.
您可以使用.str访问者get_dummies,然后使用assign字典解压缩来在数据框中创建其他列.并且,最后replace将那些0和1改为你的str,bool和nan选择.
df_out = df.assign(**df.AIRPORT.str.get_dummies().replace({1:'Y',0:np.nan}))
print(df_out)
Run Code Online (Sandbox Code Playgroud)
输出:
AIRPORT BHX EWR JAX
0 EWR|JAX NaN Y Y
1 EWR|BHX Y Y NaN
2 EWR|BHX Y Y NaN
3 EWR|BHX Y Y NaN
4 EWR|BHX Y Y NaN
Run Code Online (Sandbox Code Playgroud)