Объедините две или более таблицы с общими значениями столбцов в порядке убывания и повторите значения, если они недоступны - PullRequest
2 голосов
/ 16 октября 2019

У меня есть три фрейма данных, как это,

df1
col1    col2     fix_col
 p       q         1
 q       e         4
 x       y         7

df2
col3    col4     fix_col
 t        u       2
 v        w       6

df3
col5    col6     fix_col
 x        r        5

Предполагая, что для каждого фрейма данных значения столбца fix_col сортируются в порядке убывания.

Теперь я хочу объединить эти три данныхкадры таким образом, что значения col3 будут в порядке убывания, независимо от других столбцов. Но значение столбца не представлено, оно будет повторять указанное выше или ниже (если указанное выше значение отсутствует) значение.

Требуемый кадр данных должен выглядеть следующим образом:

df
 col1    col2    col3    col4    col5    col6    fix_col
  p        q       t      u        x       r         1
  p        q       t      u        x       r         2
  p        e       t      u        x       r         4
  p        e       t      u        x       r         5
  p        e       v      w        x       r         6
  x        y       v      w        x       r         7

Iможет сделать это с помощью цикла, но это займет больше времени для выполнения,

В поисках ярлыка / pythonic способ сделать это

1 Ответ

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

Используйте concat с DataFrame.sort_values и в последнюю очередь замените пропущенные значения прямого и обратного заполнения:

df = pd.concat([df1, df2, df3], sort=True).sort_values('fix_col').ffill().bfill()
print (df)
  col1 col2 col3 col4 col5 col6  fix_col
0    p    q    t    u    x    r        1
0    p    q    t    u    x    r        2
1    q    e    t    u    x    r        4
0    q    e    t    u    x    r        5
1    q    e    v    w    x    r        6
2    x    y    v    w    x    r        7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...