У меня была датафрейм, рассчитанный с помощью DistanceMetri c из sklearn, данные показывают каждое расстояние между остальными, я сделал multiIndex для строк и столбцов, потому что я собираюсь сгруппировать данные по EARFCN, а затем по PCI, наконец, получил каждый Минимальное расстояние использования PCI.
Посмотрите, как я сделал мой disMatrix:
from sklearn.neighbors import DistanceMetric
from math import radians
import pandas as pd
import numpy as np
# noted pandas has to be > 0.24
print(pd.__version__, np.__version__)
df = pd.read_csv('site_info.csv')
siteDataFrame = df.loc[:, ~df.columns.str.contains('Unnamed')]
dist = DistanceMetric.get_metric('haversine')
def calMatrix(celldf):
celldf['Longitude'] = np.radians(celldf['Longitude'])
celldf['Latitude'] = np.radians(celldf['Latitude'])
# Let's make the Matrix a Multi index & colums DataFrame
multi_index = pd.MultiIndex.from_frame(celldf[[ 'PCI','CellName']])
# multi_columns = pd.MultiIndex.from_frame(celldf[['CellName', 'PCI']])
distMatrix = pd.DataFrame(dist.pairwise(celldf[['Latitude','Longitude']].to_numpy())*6371000,
columns=multi_index.unique(), index=multi_index.unique())
return distMatrix
disMatrix = siteDataFrame.groupby('DLearfcn').apply(calMatrix)
disMatrix.head (): disMatrix.head ()
disMatrix.index: disMatrix.index
столбцы совпадают с EARFCN, PCI и каждой ячейкой в индексе.
, поэтому я хочу получить результат чтобы быть похожим на каждую группу EARFCN, найдите минимальное расстояние (кроме 0 и NaN) каждого PCI и соответствующих ячеек.