объединение кадров данных в Pandas без учета нулей - PullRequest
0 голосов
/ 28 мая 2020

У меня два разных фрейма данных. Первый имеет следующую форму:

"start time"  "end time" "Value1 " "Value2 "
     12:00     12:01       0         0
     12:01     12:02       1         2
     12:02     12:03       3         4

Второй имеет следующую форму.

    "start time"  "end time" "Value1 " "Value2 "
     12:00          12:01       0         0
     12:01          12:02       1         6
     12:02          12:03       0         0

Для обоих фреймов данных, если Value1 равно 0, то Value 2 также равно нулю. (то же самое применяется от значения 2 к значению 1)

Разница между временем начала и временем остановки всегда составляет 1 минуту, и оба фрейма данных имеют одинаковое количество строк. (целый день или 1440 строк)

Теперь я хочу объединить эти фреймы данных без учета нулей. Таким образом, правильные объединенные данные имеют следующую форму:

        "start time"  "end time" "Value1_1 " "Value2_1 " "Value1_2 " "Value2_2 "
          12:01          12:02       1         2            1         6

То, что я делаю, это

    df = pd.merge(df1, df2, left_index=True, right_index=True, how='outer')

Это просто не игнорирует 0 строк. Поэтому я подумал, почему бы сначала не объединить их, а затем избавиться от значений 0. Это не самый разумный способ, но он сработает. Интересно, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 28 мая 2020

При желании вы можете объединить результаты запроса для отдельных DataFrames. Хотя я не уверен, что это более элегантно или эффективно. Ваш подход тоже кажется довольно хорошим.

df = pd.merge(
    df1.where(df1['Value 1'] != 0),
    df2.where(df2['Value 1'] != 0),
    left_index = True,
    right_index = True,
    how = 'outer')

Поскольку это внешнее соединение, оно будет включать записи, в которых в одном DataFrame есть нулевые значения, а в другом нет. Если вы переключитесь на внутренний, вы можете включать только записи, в которых как df1, так и df2 содержат ненулевые значения для данной минуты.

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