合并DataframePandas,以便从右侧Dataframe为左侧Dataframe中的每个日期分配值

juud5qan  于 2023-03-16  发布在  其他
关注(0)|答案(2)|浏览(103)

我有两个DF:

  1. holidays_df -包含有关日期以及这些日期是否休息的信息
  2. df_sales -包含每个商店每天的销售信息
    我想把df_sales中的每一天信息放在是否休息一天
    节假日_df:
    | 日期|休息日|
    | - ------|- ------|
    | 二零一七年十二月一日|真的|
    | 二零一七年十二月二日|假|
    | - -|...|
    | 二零一七年十二月三十一日|假|
    df.sales:
    | 日期|销售额|商店|
    | - ------|- ------|- ------|
    | 二零一七年十二月一日|十个|1个|
    | 二零一七年十二月一日|二十个|1个|
    | 二零一七年十二月一日|无|第二章|
    | 二零一七年十二月二日|十五|1个|
    | 二零一七年十二月二日|四十五|五个|
    | - -|...|这......|
    | 二零一七年十二月三十一日|十个|六个|
    结果可能是这样的
    结果_DF:
    | 日期|销售额|商店|休息日|
    | - ------|- ------|- ------|- ------|
    | 二零一七年十二月一日|十个|1个|真的|
    | 二零一七年十二月一日|二十个|1个|真的|
    | 二零一七年十二月一日|无|第二章|真的|
    | 二零一七年十二月二日|十五|1个|假|
    | 二零一七年十二月二日|四十五|五个|假|
    | - -|...|这......|这......|
    | 二零一七年十二月三十一日|十个|六个|假|
    我试着用df_sales.merge(holydays_df,on ='date',how= 'left')合并它们,但是在result_df中我比原来的df_sales少了800行!
    如何合并df_sales和holydays_df?我需要df_sales和result_df中的行数相同
9vw9lbht

9vw9lbht1#

让我们使用pd.Series.map

df_sales['day_off'] = df_sale['date'].map(holidays_df.set_index('date')['day_off'])
f5emj3cl

f5emj3cl2#

使用outer而不是left。这应该会保留所有行并使用NaN填充它们:

df_sales.merge(holidays_df, on='date', how='outer')

相关问题