drug_protein['gene_hgnc_id'] = pd.factorize(drug_protein['gene_hgnc_id'])[0]解释一下
时间: 2023-12-25 12:04:28 浏览: 33
这行代码使用了 pandas 库中的 factorize() 函数,它的作用是将 drug_protein 数据集中的 gene_hgnc_id 列中的不同取值转换为整数编码,并将编码后的结果存储到 gene_hgnc_id 列中。
具体地,factorize() 函数会返回一个元组,其中第一个元素是一个 NumPy 数组,包含了原始数据中每个不同取值对应的整数编码。第二个元素是一个 Index 数组,包含了原始数据中所有不同的取值。在这里,我们只使用了第一个元素,并将其赋值给 gene_hgnc_id 列,实现了整数编码的转换。
这样做的好处是,将分类变量转换为整数编码可以使得算法更容易处理数据,并且可以降低计算成本。
相关问题
我有一个dataframe,有两列,分别为gene_hgnc_id和embedding,现在我还有一个一维列表lis,里面的元素为gene_hgnc_id,如何将lis根据dataframe替换成embedding
你可以使用pandas库的merge函数,将两个DataFrame合并,然后根据lis中的gene_hgnc_id筛选embedding列,得到你想要的结果。
具体实现步骤如下:
1. 将lis转换成DataFrame格式
```python
import pandas as pd
lis_df = pd.DataFrame({'gene_hgnc_id': lis})
```
2. 使用merge函数将两个DataFrame合并
```python
merged_df = pd.merge(df, lis_df, on='gene_hgnc_id', how='inner')
```
这里的on参数表示根据gene_hgnc_id列进行合并,how参数表示使用内连接方式。
3. 筛选embedding列
```python
result = merged_df['embedding']
```
最终得到的result就是根据lis替换成的embedding列表。
entrezid转为gene symbol
以下是使用R语言中的biomaRt包将entrezid转化为gene symbol的例子:
```R
# 安装和加载biomaRt包
install.packages("biomaRt")
library(biomaRt)
# 选择要查询的数据库和数据集
ensembl = useMart("ensembl", dataset = "hsapiens_gene_ensembl")
# 输入entrezid
entrezid = c("1017", "1018", "1019")
# 使用getBM函数将entrezid转化为gene symbol
gene_symbol = getBM(attributes = c("entrezgene_id", "hgnc_symbol"),
filters = "entrezgene_id",
values = entrezid,
mart = ensembl)
# 输出结果
gene_symbol
```
输出结果为:
```
entrezgene_id hgnc_symbol
1 1017 CDK2
2 1018 CDK3
3 1019 CDK4
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)