Python 如何在数据框中创建一个新列,该列的值表示某列的值所属的范围?

Python 如何在数据框中创建一个新列,该列的值表示某列的值所属的范围?,python,pandas,Python,Pandas,我读了一个.csv文件来创建一个dict,对于每个给定的序列,它包含名称作为键,以及一个列表,其中一个DNA序列和一个荧光测量值作为值。在这些序列被各种其他函数处理一段时间后,我将制作一个新的数据帧,其中包含荧光值和其他各种值,这些值是所述函数的产物 我现在想创建一个新的列,基本上将每一行“排序”到一个类中,该类表示荧光测量所处的范围。例如,如果某个DNA序列与240的荧光测量值相关联,它应该属于标记为“200-300”或“100-400”的类别。由于我还没有决定我的范围应该设置为什么大小,所以

我读了一个.csv文件来创建一个dict,对于每个给定的序列,它包含名称作为键,以及一个列表,其中一个DNA序列和一个荧光测量值作为值。在这些序列被各种其他函数处理一段时间后,我将制作一个新的数据帧,其中包含荧光值和其他各种值,这些值是所述函数的产物

我现在想创建一个新的列,基本上将每一行“排序”到一个类中,该类表示荧光测量所处的范围。例如,如果某个DNA序列与240的荧光测量值相关联,它应该属于标记为“200-300”或“100-400”的类别。由于我还没有决定我的范围应该设置为什么大小,所以假设我将有三个类(为了简单起见):“200”

我有下面的代码,可以很好地使用新值创建一个新的数据帧,但我不知道如何设置它,以便添加相应荧光测量所属的“类”

def data_assembler(folder_contents):
    df= DataFrame(columns= ['Column1','Column2','Column3])
    for candidate in folder_contents.keys()[:50]:
        fluorescence= folder_contents[candidate][0]
        score0= fluorescence 
        if score0 < 100:
             class1= str("<100")
        elif score0>100 and score0<200:
             class2= str("100-200")
        elif score0>200:
             class3= str(">200")
        score1= calculate_complex_mfe(folder_contents[candidate][1])
        score2= calculate_complex_ensemble_defect(folder_contents[candidate][1])
        score3= calculate_GC_content(folder_contents[candidate][1])
    ###note: the following line is not correct because I'm not sure how to add the class to the particular cell
    df.loc[candidate]= [class1 or class2 or class3 or score0, score1, score2, score3]
    df= df.sort(['score3'], ascending=False)
df.to_csv(path.join(output, "DNAScoring.csv"))
def数据汇编程序(文件夹内容):
df=DataFrame(列=['Column1','Column2','Column3])
对于文件夹_contents.keys()[:50]中的候选人:
荧光=文件夹内容[候选][0]
分数0=荧光
如果得分0<100:
类别1=str(“200”)
分数1=计算复杂度(文件夹内容[候选项][1])
score2=计算\u复杂\u整体\u缺陷(文件夹\u内容[候选项][1])
score3=计算\u GC\u内容(文件夹\u内容[候选人][1])
###注意:下一行不正确,因为我不确定如何将类添加到特定单元格
df.loc[candidate]=[class1或class2或class3或score0,score1,score2,score3]
df=df.sort(['score3'],升序=False)
df.to_csv(path.join(输出,“DNAScoring.csv”))
如何改进代码,使其最终拥有如下数据帧:

我认为您需要:

df=pd.DataFrame({'fluorescent':[010020300]})
bin=[-np.inf,99200,np.inf]
标签=['200']
df['Class']=pd.cut(df['fluorescent'],料仓=料仓,标签=标签)
打印(df)
荧光类
0             0     200

这是您的答案!
df = pd.DataFrame({'Fluorescence':[0,100,200,300]})
bins = [-np.inf, 99, 200, np.inf]
labels=['<100','100-200','>200']
df['Class'] = pd.cut(df['Fluorescence'], bins=bins, labels=labels)
print (df)
   Fluorescence    Class
0             0     <100
1           100  100-200
2           200  100-200
3           300     >200