У меня есть вопрос, касающийся Pandas Multiindex и применения функции.У меня есть следующий многоиндексированный набор данных в результате этого кода:
grouped_df = df.groupby(by = ["individual", "cluster"])["totalTripDurationMinutes", "totalPrice"].min()
with shape (2931, 2)
:
totalTripDurationMinutes totalPrice
individual cluster
967380 0 160 317.25
1 160 363.75
2 160 463.75
3 160 523.75
4 160 523.75
И у меня есть другой набор данных, который также имеет столбцы individual
, totalTripDurationMinutes
, cluster
и totalPrice
вместе с другими столбцами.То, что я хочу сделать, это для каждого человека и для каждого кластера выяснить, равна ли цена минимальной цене и продолжительности для этого кластера и отдельного человека, как логическое значение в таблице df_grouped
выше.Я сделал эти пользовательские функции:
def domPriceFinder(row, groupedPricesDf = grouped_df):
menuId = row["individual"]
clusterId = row["cluster"]
minPrice = groupedPricesDf.loc[((groupedPricesDf.index.get_level_values("individual") == menuId) &
(groupedPricesDf.index.get_level_values("cluster") == clusterId)).all()]["totalPrice"]
return 1 if row["totalPrice"] == minPrice else 0
def domDurationFinder(row, groupedPricesDf = grouped_df):
menuId = row["individual"]
clusterId = row["cluster"]
minDuration = groupedPricesDf.loc[((groupedPricesDf.index.get_level_values("individual") == menuId) &
(groupedPricesDf.index.get_level_values("cluster") == clusterId)).all()]["totalTripDurationMinutes"]
return 1 if row["totalTripDurationMinutes"] == minDuration else 0
Однако, когда я применяю эти функции к моему исходному df
построчно, я получаю ошибку
KeyError: ('the label [False] is not in the [index]', 'occurred at index 0')
это мои функции применения:
df["isDominantPrice"] = df.apply(domPriceFinder, axis = 1)
df["isDominantDuration"] = df.apply(domDurationFinder, axis = 1)
Кто-нибудь может мне помочь с этим?Я предполагаю, что я делаю что-то не так с логическими операциями в моих пользовательских функциях