计算raw_count.txt文件中每一个样本中最高表达的10个基因,并保存为数据框。
时间: 2024-05-06 12:15:27 浏览: 154
raw_loop.zip_RAW_linux raw socket_raw socket
假设`raw_count.txt`中每一行表示一个样本的基因表达数据,第一列为样本名,后面的列为基因表达值。可以按照以下步骤实现:
1. 读取`raw_count.txt`文件,转换为数据框。
2. 对于每一行(即每一个样本),按照基因表达值从大到小排序,取前10个基因。
3. 将每个样本的前10个基因及其表达值保存为一个数据框,并将所有数据框合并为一个大的数据框。
以下是具体的代码实现:
```python
import pandas as pd
# 读取 raw_count.txt 文件,转换为数据框
df = pd.read_csv("raw_count.txt", sep="\t", header=None)
# 对于每一行,按照基因表达值从大到小排序,取前10个基因
top10_genes = df.iloc[:, 1:].apply(lambda x: x.sort_values(ascending=False).head(10).index.tolist(), axis=1)
# 将每个样本的前10个基因及其表达值保存为一个数据框,并将所有数据框合并为一个大的数据框
top10_df = pd.concat([pd.DataFrame({"Sample": df.iloc[i, 0], "Gene": top10_genes[i]}) for i in range(len(df))])
```
其中,`top10_genes`是一个Series,每个元素是一个列表,表示对应样本的前10个基因。`pd.DataFrame({"Sample": df.iloc[i, 0], "Gene": top10_genes[i]})`用于将一个样本的前10个基因及其表达值转换为一个数据框。最后,使用`pd.concat`将所有样本的数据框合并为一个大的数据框。
阅读全文