【发布时间】:2021-12-25 19:17:52
【问题描述】:
我正在尝试根据其中特定值的百分位数将数据集中两列的值从特定数值(2、10、25 等)更改为单个值(1、2、3 或 4)数据集。
使用 pandas quantile() 函数,我得到了想要替换的范围,但我还没有找到一种工作方法。
age1 = datasetNB.Age.quantile(0.25)
age2 = datasetNB.Age.quantile(0.5)
age3 = datasetNB.Age.quantile(0.75)
fare1 = datasetNB.Fare.quantile(0.25)
fare2 = datasetNB.Fare.quantile(0.5)
fare3 = datasetNB.Fare.quantile(0.75)
我目前对这个问题的解决尝试如下:
for elem in datasetNB['Age']:
if elem <= age1:
datasetNB[elem].replace(to_replace = elem, value = 1)
print("set to 1")
elif (elem > age1) & (elem <= age2):
datasetNB[elem].replace(to_replace = elem, value = 2)
print("set to 2")
elif (elem > age2) & (elem <= age3):
datasetNB[elem].replace(to_replace = elem, value = 3)
print("set to 3")
elif elem > age3:
datasetNB[elem].replace(to_replace = elem, value = 4)
print("set to 4")
else:
pass
for elem in datasetNB['Fare']:
if elem <= fare1:
datasetNB[elem] = 1
elif (elem > fare1) & (elem <= fare2):
datasetNB[elem] = 2
elif (elem > fare2) & (elem <= fare3):
datasetNB[elem] = 3
elif elem > fare3:
datasetNB[elem] = 4
else:
pass
我应该怎么做才能让它工作?
【问题讨论】:
-
请将您的数据框的一部分添加到原始问题中。 df.head(20).to_dict() 并粘贴到字典中。请不要图片。
-
请提供一些没有图片的数据。
标签: python pandas csv range quantile