我正在尝试使用范围如下
的pandas箱tipBins = [1,5,10,15,20,25,30].
对于某些游乐设施,小费也不为零,不属于任何范围。 如何在pandas bin中提供零值。我需要一个像下面这样的分区
==0
1-5
5-10
10-15
15-20
20-25
25-30
import numpy as np
tipBins = [1,5,10,15,20,25,30]
tipData=DataFrame(tipPercentage)
tip_data_names = ["No Tip", '1-5','5-10','10-15','15-20','20-25','25-30']
tipData['ranges'] = pd.cut(tipData['tipPercent'], tipBins, labels=tip_data_names)
td=tipData[['count','ranges']].groupby(['ranges']).sum().fillna(0)
sd.reset_index()
我应该有这样的箱子tipBins = [0,0,1,5,10,15,20,25,30].
答案 0 :(得分:0)
如果您确定 tipPercentage 不包含任何负数,则可以在tipBins
中添加负数,例如:
tipBins = [-1,1,5,10,15,20,25,30]
实施例:
v = [0, 4, 7, 20, 26]
tip_data_names = ["No Tip", '1-5','5-10','10-15','15-20','20-25','25-30']
import pandas as pd
pd.cut(v, tipBins, labels=tip_data_names)
# [No Tip, 1-5, 5-10, 15-20, 25-30]
# Categories (7, object): [No Tip < 1-5 < 5-10 < 10-15 < 15-20 < 20-25 < 25-30]
如果您的数据超出了您想要的范围,例如,您不希望包含0到1之间的某些值,那么您可能需要在 cut 之前过滤数据:
tipData = tipData[(tipData['tipPercent'] == 0) | ((tipData['tipPercent'] >= 1) & (tipData['tipPercent'] <= 30)]
这样,您的数据将完全属于您关注的范围,然后您可以使用上述方法进行剪切。