熊猫数据转换

Bar*_*ani 4 python pandas

我在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)

但我希望不必为每个机场写这个代码.

Sco*_*ton 5

您可以使用.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)