python - 如何使用数据框的行和列创建类对象的多个实例?
问题描述
第一次创建和使用类,所以我可能会遗漏一些明显的东西。无论如何,如果我为它提供单个实例(序列),我有一个可以正常工作的类。
class Protein(object):
def __init__(self,sequence):
self.peptide=sequence
self.length=len(self.peptide)
self.mass=int(Peptide.Mass(self.peptide))
我需要创建包含在数据框中的 >20k 实例。这是一个简化的示例:
x= {'Gene': {0: 'Apple',
1: 'Orange',
2: 'Grape',
3: 'Kiwi',
4: 'Berry'},
'Sequence': {0: 'TYK', 1: 'WWK', 2: 'CLK', 3: 'KVA', 4: 'VAV'},
'UniprotID': {0: AJ38498, 1: AJ334343, 2: AJ67798, 3: AJ36998, 4: AJ15287}
}
df= pd.DataFrame(x)
这可能不是最好的方法,但我想创建一个函数,使用函数生成我的类(肽)的多个实例。我计划跨多个数据框(可能具有不同的列名)进行相同的数据分析,因此从长远来看,创建一个函数可以节省我的时间。这是我的尝试:
def Menu(df,identity,sequence,db_id):
for protein,sequence,name in zip(df[identity],df[sequence],df[db_id]):
protein = Protein(sequence)
protein.name=str(name)
例子:
Menu(df,"Gene","Sequence","UniprotID")
目前,它没有创建实例:
##If I type Kiwi.mass it will return an error stating that the object Kiwi doesn't exist.
解决方案
您的Menu
函数似乎没有返回任何内容,而且它覆盖了for
循环中的蛋白质对象。
因此,对于您要问的内容,您Menu
可以在函数中创建一个空列表并填写for
循环并返回该列表。
def Menu(df,identity,sequence,db_id):
proteins = []
for protein,sequence,name in zip(df[identity],df[sequence],df[db_id]):
protein = Protein(sequence)
protein.name=str(name)
proteins.append(protein)
return proteins
推荐阅读
- cryptography - 将带有 AddDeveloperSigningCredential 的 IdentityServer4 解决方案部署到 IIS 时出现 CryptographicException
- linux - bash 中的 case 语句替代方案
- java - 从 XML 文件中读取值
- php - 使用 Paypal 在 PHP 中丢失 SESSION 变量
- java - 如何从 java.net 下载 OpenJDK 8 源代码
- python - Kivy 将图像作为按钮添加到另一个页面
- gradle - Xtext:无法解析对 JvmType MyGeneratorModule 的引用
- python - 图像中的文字是否为粗体?
- sass - 在主题引导程序 4 中覆盖默认的 $border-radius-lg 变量
- windows - Windows MongoDB 日志非常大