Панды - Хранить продукцию условно - PullRequest
0 голосов
/ 03 июля 2018

У меня есть df.apply, который возвращает серию с ключом / значением, как показано ниже (назовем это столбцом A):

         Col. A
40237    1.871111
40239    1.280556
40240    1.784167
40241    0.049167
40243    0.011389
40244    0.660278
40245    1.512500

Я хотел бы сохранить эти значения в различных столбцах, используя значение отдельного столбца (столбец B).

Столбец B может содержать 6 различных строк (в примере 4).

         Col. B
40237    Open
40239    Open
40240    In Progress
40241    Closed
40243    Waiting
40244    In Progress
40245    Waiting

Я хочу сохранить значения столбца A в один из 4 столбцов на основе значения столбца B.

Конечный результат:

         Col. A      Col. B        Open Time   In Progress Time  Closed Time Waiting Time
40237    1.871111    Open          1.871111    np.nan            np.nan      np.nan
40239    1.280556    Open          1.280556    np.nan            np.nan      np.nan
40240    1.784167    In Progress   np.nan      1.784167          np.nan      np.nan
40241    0.049167    Closed        np.nan      np.nan            0.049167    np.nan
40243    0.011389    Waiting       np.nan      np.nan            np.nan      0.011389
40244    0.660278    In Progress   np.nan      0.660278          np.nan      np.nan
40245    1.512500    Waiting       np.nan      np.nan            np.nan      1.512500

Теперь мои лучшие попытки заставить это работать:

for key in output.index:
    df.loc[key,(df['Col. B'] + " Time")] = output.loc[key]

Однако моя ошибка ValueError: cannot index with vector containing NA / NaN values. Я не уверен, почему именно, хотя в моих колонках вообще много нанов.

1 Ответ

0 голосов
/ 03 июля 2018

Использование join из pivot ed DataFrame с add_suffix:

df = df.join(pd.pivot(df.index, df['Col. B'], df['Col. A']).add_suffix(' Time'))

Другим решением является поворот по set_index с unstack:

df = df.join(df.set_index('Col. B', append=True)['Col. A'].unstack().add_suffix(' Time'))

print (df)
         Col. A       Col. B  Closed Time  In Progress Time  Open Time  \
40237  1.871111         Open          NaN               NaN   1.871111   
40239  1.280556         Open          NaN               NaN   1.280556   
40240  1.784167  In Progress          NaN          1.784167        NaN   
40241  0.049167       Closed     0.049167               NaN        NaN   
40243  0.011389      Waiting          NaN               NaN        NaN   
40244  0.660278  In Progress          NaN          0.660278        NaN   
40245  1.512500      Waiting          NaN               NaN        NaN   

       Waiting Time  
40237           NaN  
40239           NaN  
40240           NaN  
40241           NaN  
40243      0.011389  
40244           NaN  
40245      1.512500  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...