сравнить и получить результат двух datframes в одном dataframe - PullRequest
0 голосов
/ 06 ноября 2019

Я новичок в python and pandas. Здесь у меня есть следующий фрейм данных

df1 = 
A1    B1     A2  B2  A3  B3
null  null   0   2    7   2
103    22     91  0   88  0 
137    22    131  2   126  2
161    2     159  2   157  2

df2 = 

 A4     B4      A5     B5       A6     B6
103    2200     109    0       113    2200
113    2200     126   2200     131    2200
157    200      159   200      161    200
170    200      184    0       195    200

Я пытаюсь взять A1 из df1 и A4 из df2.

сначала, это будет похоже, null -> 103 Теперьесть вероятность, что значения в A1 могут быть нулевыми, поэтому мне нужно принять значение A3, если не A1. или A2

Итак, это как наибольшее значение из df1 в A1

и самое низкое значение из df2 в A4

Здесь я пытаюсь получить следующий вывод

start    end    sval        eval
7        103     [2,2]      [2200,0,2200]
103      113     [22,0,0]   [2200,2200,2]
137      157     [22,2,2]   [ 200,200,200]
161      170     [2,2,2]    [ 200,0,200]

So here sval has all the values that are in that row of `B` and eval has all values that have in that row for `B`

Как я могу получить этот вывод?

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете сгенерировать кадр выходных данных, как показано ниже.

df_out = pd.DataFrame(index=df1.index, columns=["start", "end"])
df_out["end"] = pd.DataFrame(df2["A4"])
df_out["start"] = df1[['A1', 'A2', 'A3']].apply(lambda x: np.max(x), axis=1)
df_out["eval"] = df1[['B1', 'B2', 'B3']].apply(lambda x: [y for y in x if not np.isnan(y)], axis=1)
df_out["sval"] = df2[['B4', 'B5', 'B6']].apply(lambda x: [y for y in x if not np.isnan(y)], axis=1)
df_out

df1 равно

    A1  B1  A3  B2
0   NaN NaN 88  162
1   135.0   74.0    149 24
2   97.0    141.0   103 145
3   NaN 138.0   29  162
4   8.0 157.0   6   145

df2 равно

    A4  B3  A5
0   144 107 47
1   52  122 126
2   176 135 132
3   32  25  42
4   16  39  115

результат


start   end
0   88.0    144
1   135.0   52
2   97.0    176
3   29.0    32
4   8.0 16
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...