熊猫数据框:如何获取单元格而不是价值

时间:2020-03-05 09:52:55

标签: pandas dataframe

我有一个任务来比较两个具有相同列名但大小不同的数据框,我们可以将其称为上一个和当前。我试图获取“数量”和“预订”列中的(上一个和当前)之间的差异,并将其突出显示为黄色。两个数据框之间的共同键是“ 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,'Quantity']返回值,而不是数据帧类型。如何从一个单元格获取数据帧。我是否必须pd.DataFrame(data = df_n.loc [idx,'Quantity'],index = idx,columns ='Quantity')。这会创建副本还是会更新参考?
  • 如何比较两个数据帧的序列号,以寻找更好的比较方法。我能想到的一件事是对两个数据框都使用set index,并在使用完它们后将它们重置回原位?

我的数据框:

先前的数据框 df_o previous dataframe

当前数据框 df_n new dataframe

1 个答案:

答案 0 :(得分:1)

df_n.loc [idx,'Quantity']返回值,而不是数据帧类型。 如何从一个单元格获取数据帧。我一定要吗 pd.DataFrame(data = df_n.loc [idx,'Quantity'],index = idx,列 =“数量”)。这会创建副本还是会更新参考?

要从一个单元格创建一个DataFrame,可以尝试:keep_prob

如何比较两个数据帧的序列号,以寻找更好的方法 比较。我能想到的一件事是对两者都使用set index 数据框,并在使用完后将其重置回原位?

您可以使用df_n.loc[idx, ['Quantity']].to_frame().T合并数据框和“比较”列。