Pandas垃圾箱附加垃圾箱== 0

时间:2017-04-21 02:21:13

标签: python pandas numpy dataframe

我正在尝试使用范围如下

的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].

1 个答案:

答案 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)]

这样,您的数据将完全属于您关注的范围,然后您可以使用上述方法进行剪切。