如何根据间隔将列的某些单元格替换为其他单元格

问题描述 投票:0回答:1

我正在从事医学项目。我有一个大型数据集,需要清理和转换它。我有一个特殊的列(df ['code']),其中的数字与代码相对应。现在,我想将数量小于250的所有代码替换为与间隔相对应的其他值。部分代码已经完成:

# Save some codes
threshold_count = 250 
count_diag = Counter(df['code'])
small_codes_itens = [k for k, count in count_diag.items() if count < threshold_count]

# Only codes with less than 250 
small_diagcodes = df['code'][df['code'].isin(small_codes_itens)].str.slice(start=0, stop=3, step=1)
small_diagcodes = small_diagcodes[~small_diagcodes.str.contains("[a-zA-Z]").fillna(False)]
small_diagcodes.fillna(value='1500', inplace=True)
small_diagcodes = small_diagcodes.astype(int)

ranges = [(1, 140), (140, 240), (240, 280), (280, 290), (290, 320), (320, 390), 
               (390, 460), (460, 520), (520, 580), (580, 630), (630, 680), (680, 710),
               (710, 740), (740, 760), (760, 780), (780, 800), (800, 1000), (1000,2000)]

现在,例如,如果一个单元格中的值是50,则将其替换为0,如果它是150,则将其替换为1,如果它是250,则将其替换为2,依此类推。 ,根据时间间隔(以“范围”为单位)。

我该怎么做?

python for-loop intervals
1个回答
0
投票

这可能会帮助:

t = [r for r in ranges if r[0]<=count_diag and r[1]>count_diag]
result = count_diag
if len(t)>0:
    result = t[0][0]
© www.soinside.com 2019 - 2024. All rights reserved.