Создание нового кадра данных на основе максимального элемента - PullRequest
0 голосов
/ 23 октября 2018

У меня есть два фрейма данных -

cols = ['A','B']
data = [[-1,2],[0,2],[5,1]]
data = np.asarray(data)
indices = np.arange(0,len(data))

df = pd.DataFrame(data, index=indices, columns=cols)

cols = ['A','B']
data2 = [[-13,2],[-1,2],[0,4],[2,1],[5,0]]
data2 = np.asarray(data2)
indices = np.arange(0,len(data2))

df2 = pd.DataFrame(data2, index=indices, columns=cols)

Теперь я хочу создать новый фрейм данных, который имеет для одного и того же фрейма A максимум B.

Поэтому, результат будет-

    A   B
0  -13  2
1  -1   2
2   0   4
3   2   1
4   5   1

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Использование drop_duplicates

pd.concat([df2,df]).sort_values('B').drop_duplicates('A',keep='last')
Out[80]: 
    A  B
3   2  1
2   5  1
0 -13  2
0  -1  2
2   0  4
0 голосов
/ 23 октября 2018

Вы можете выровнять индексы, объединить и затем взять максимум:

res = pd.concat([df.set_index('A'), df2.set_index('A')], axis=1)\
        .max(1).astype(int).rename('B').reset_index()

print(res)

    A  B
0 -13  2
1  -1  2
2   0  4
3   2  1
4   5  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...