@frasero

Как оставить все повторы второго столбца, в единственном варианте, при этом, выбрав им в пару максимальный элемент из первого столбца?

Есть такой не самый красивый код:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
print()
x1 = pd.read_excel("start.xlsx", sheet_name = "x1").to_numpy()
x2 = pd.read_excel("start.xlsx", sheet_name = "x2").to_numpy()

resch = []
resd = []
for i in range(len(x2)):
    for j in range(len(x1)):
        resch.append(min(x1[j][0],x2[i][0]))
        resd.append(round(x1[j][1] + x2[i][1],2))
print(resch)
print("------------------------------")
print(resd)
print("------------------------------")
result = np.array([resch,resd])
result = result.T
print(result)


В итоге, получается вот такой массив:

61aa6d11f21e8334307610.png

Как оставить все повторы второго столбца, в единственном варианте, при этом, выбрав им в пару максимальный элемент из первого столбца?
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
aRegius
@aRegius
Python Enthusiast
Pandas:
result = pd.DataFrame(result)
pd_result = result.groupby(1, as_index=False).max().reindex(columns=[0, 1])
np_result = pd_result.to_numpy()

Python:
from collections import defaultdict

data = defaultdict(list)
for value, key in result:
	  data[key].append(value)

result = [[max(value), key] for key, value in data.items()]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы