Переиндексация Pandas Dataframe с определенными индексами даты и времени - PullRequest
2 голосов
/ 16 октября 2019

У меня простой вопрос, лучше всего описанный на примере. Я пытаюсь отобразить output_df на основе current_df и parent_df.

current_df: простой временной ряд df с указателем даты и времени

Index                            Val
'10-1-2010 08:00:00'              1.23
'10-1-2010 09:00:00'              1.3
'10-1-2010 10:00:00'               1.43

parent_df: другой простой временной ряд df

Index                            Val
'10-1-2010 07:00:00'              0.23
'10-1-2010 08:00:00'              1.23
'10-1-2010 09:00:00'              1.3
'10-1-2010 10:00:00'               1.43
'10-1-2010 11:00:00'              2.23

Выходной_df должен:

  1. содержать индекс parent_df
  2. содержать значение 0, если индекс не в current_df
Index                             Val
'10-1-2010 07:00:00'              0
'10-1-2010 08:00:00'              1.23
'10-1-2010 09:00:00'              1.3
'10-1-2010 10:00:00'               1.43
'10-1-2010 11:00:00'                0

Это должно быть легким заданием - я просто отключаюсь.

Приветствия.

Ответы [ 3 ]

1 голос
/ 16 октября 2019

вы можете сделать это с помощью слияния, как показано ниже

parent_df[["Index"]].merge(current_df, on="Index", how="left").fillna(0)
1 голос
/ 16 октября 2019

Я думаю, этот фрагмент кода поможет вам.

# copy the dataframe
output_df = parent_df

# use negated .isin() search to find the indices that are not in current_df
# and replace them with zero
output_df.loc[~output_df['Index'].isin(current_df['Index'])] = 0
1 голос
/ 16 октября 2019

Я думаю, что это функциональность reindex

output_df = current_df.reindex(parent_df.index, fill_value=0)
...