我正在尝试编写一个 python 脚本来操作 excel 电子表格。
假设如果,我有样本数据:
Gene chrom strand TSS TES Name
NM_145215 chr5 + 135485168 135488045 Abhd11
NM_1190437 chr5 + 135485021 135488045 Abhd11
NM_1205181 chr14 + 54873803 54888844 Abhd4
NM_134076 chr14 + 54878906 54888844 Abhd4
NM_9594 chr2 + 31615464 31659747 Abl1
NM_1112703 chr2 + 31544075 31659747 Abl1
NM_207624 chr11 + 105829258 105851278 Abl1
NM_9598 chr11 + 105836521 105851278 Ace2
NM_1130513 chrX + 160577273 160626350 Ace2
NM_27286 chrX + 160578411 160626350 Ace2
对于那些相似的名称(第 6 列),我想检索 TSS 最少的整行。 例如,对于前 2 行 - Abhd11 名称,我想在结果中保存第 2 行,因为 TSS 135485021 < 135485168。对于具有相同名称的所有集合也是如此。
欢迎任何想法和评论。
最佳答案
输入
如果可能的话,我会将 excel 文件保存为 csv 文件,然后使用 csv
module 加载到 python 中.
或者您可以使用 xlrd
module for reading excel files - 虽然我没有使用过这个并且不太了解它。
openpyxl
是解析 excel 文件的附加选项(欢呼又是一个笨蛋)。
操纵
ernie 的想法似乎可行,我将按如下方式实现。
假设 linesreadfromfile
是使用 csv.reader
读取的列表列表,即每个列表元素是一个值列表,对应于文件中该行的分隔条目,
finaldict = {}
for row in linesreadfromfile:
if finaldict.has_key(row[5]):
if finaldict[row[5]][3] > row[3]:
finaldict[row[5]] = row
else:
finaldict[row[5]] = row
关于用于操作 excel 表的 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11800726/