我对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)
有人可以帮助我吗?我想我的自定义函数中的逻辑操作有问题