【发布时间】:2020-04-29 10:19:23
【问题描述】:
我有一个数据框df:
A
1 12
2 15.5
3 20.5
4 30.5
5 15
范围:
x_range = [list(range(0,5)),list(range(6,10)),list(range(11,15)),list(range(15,20)),list(range(21,25))]
功能:
def min_max_range(x,y):
for a in y:
if int(x) in a:
min_val = min(a)
max_val = max(a)+1
return max_val - min_val
结果应该是这样的:
df['A'].apply(lambda x: min_max_range(x,x_range))
A B
1 12 5
2 15 5
3 20.5 4
4 5.5 4
5 15.5 4
但我得到的是:
A B
1 12 4
2 15 5
3 20.5 NA
4 5.5 NA
5 15.5 NA
我知道为什么会这样,它没有考虑range(0,5) = [0,1,2,3,4,5] 和range(6,10) = [6,7,8,9,10] 之间的值,现在它没有考虑between 5 & 6 之间的值。如果有值5.5 or 5.8。那么它不会考虑它并返回NA。我怎样才能避免这种情况?
【问题讨论】:
标签: python-3.x pandas list dataframe range