gpt4 book ai didi

python - 如何在 DataFrame 中创建一个新列,其值表示特定列中的值所属的范围?

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:54 25 4
gpt4 key购买 nike

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

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

我怎样才能改进我的代码以使其最终拥有一个看起来像这样的数据框:

enter image description here

最佳答案

我想你需要cut :

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

关于python - 如何在 DataFrame 中创建一个新列,其值表示特定列中的值所属的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43143938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com