Pandas Dataframe: как получить ячейку вместо значения - PullRequest
0 голосов
/ 05 марта 2020

У меня есть задача сравнить два кадра данных с одинаковым именем столбца, но разным размером, мы можем назвать его предыдущий и текущий. Я пытаюсь получить разницу между (предыдущим и текущим) в столбцах «Количество» и «Забронированные» и выделить их желтым цветом. Общим ключом между этими двумя кадрами данных будут столбцы 'SN'

Я кодировал следующее

    for idx, rows in df_n.iterrows():
        if rows["Quantity"] == rows['Available'] +  rows['Booked']:
           continue
        else:
           rows["Quantity"] = rows["Quantity"] - rows['Available'] - rows['Booked']
           df_n.loc[idx, 'Quantity'].style.applymap('background-color: yellow')
           # pdb.set_trace()
           if (df_o['Booked'][df_o['SN'] == rows["SN"]] != rows['Booked']).bool():
                df_n.loc[idx, 'Booked'].style.apply('background-color: yellow')

Я понимаю, что у меня есть несколько проблем здесь и мне нужна помощь

  • df_n.loc [idx, «Количество»] возвращает значение вместо типа фрейма данных. Как я могу получить данные из одной ячейки. Должен ли я pd.DataFrame (data = df_n.loc [idx, «Количество»], индекс = idx, столбцы = «Количество»). Создаст ли это копию или обновит ссылку?
  • Как сравнить SN обоих фреймов данных, чтобы найти лучший способ сравнения. Одна вещь, о которой я могу подумать, - это использовать заданный индекс для обоих фреймов данных, а когда закончить их использовать, сбросить их обратно?

Мой фрейм данных:

Предыдущий фрейм данных df_o previous dataframe

Текущий кадр данных df_n new dataframe

1 Ответ

1 голос
/ 05 марта 2020

df_n.loc [idx, «Количество»] возвращает значение вместо типа фрейма данных. Как я могу получить данные из одной ячейки. Должен ли я pd.DataFrame (data = df_n.loc [idx, «Количество»], индекс = idx, столбцы = «Количество»). Это создаст копию или обновит ссылку?

Чтобы создать DataFrame из одной ячейки, вы можете попробовать: df_n.loc[idx, ['Quantity']].to_frame().T

Как сравнить SN Оба кадра данных, в поисках лучшего способа для сравнения. Одна вещь, о которой я могу подумать, - это использовать заданный индекс для обоих фреймов данных, а когда закончите их использовать, сбросить их обратно?

Вы можете использовать df_n.merge(df_o, on='S/N') для объединения фреймов данных и сравнения столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...