小编Sar*_*ara的帖子

numpy.savetxt在标题行的开头没有哈希标记

当我尝试使用标题保存矩阵时,第一行会出现哈希标记和空格(#):

输入:

np.savetxt(filename,data, fmt='%i %i %i %i %s',delimiter='\t',header="a\tb\tc\td\te")
Run Code Online (Sandbox Code Playgroud)

输出:

# a b   c   d   e
0   0   0   0   bla
0   0   0   0   bla
1   1   1   1   bla
1   1   1   1   bla
Run Code Online (Sandbox Code Playgroud)

任何暗示为什么?我怎么能删除它?

python numpy

33
推荐指数
1
解决办法
9924
查看次数

Biopython SeqIO转Pandas数据框

我有一个FASTA文件,可以很容易地对其进行解析SeqIO.parse

我对提取序列ID和序列长度感兴趣。我用这些行来做,但是我觉得它太重了(两次迭代,转换等)。

from Bio import SeqIO
import pandas as pd


# parse sequence fasta file
identifiers = [seq_record.id for seq_record in SeqIO.parse("sequence.fasta",
                                                           "fasta")]
lengths = [len(seq_record.seq) for seq_record in SeqIO.parse("sequence.fasta",
                                                             "fasta")]
#converting lists to pandas Series    
s1 = Series(identifiers, name='ID')
s2 = Series(lengths, name='length')
#Gathering Series into a pandas DataFrame and rename index as ID column
Qfasta = DataFrame(dict(ID=s1, length=s2)).set_index(['ID'])
Run Code Online (Sandbox Code Playgroud)

我只需要一个迭代就可以做到,但是我得到了一个字典:

records = SeqIO.parse(fastaFile, 'fasta')
Run Code Online (Sandbox Code Playgroud)

我不知怎么DataFrame.from_dict去上班...

我的目标是迭代FASTA文件,并DataFrame在每次迭代中获取ID和序列长度。

这是一份简短的FASTA文件,供那些需要帮助的人使用。

python fasta biopython pandas

5
推荐指数
2
解决办法
3918
查看次数

为给定列排序numpy矩阵

我已经尝试使用Ned Batchelder代码按人类顺序排序NumPy矩阵,正如以下帖子中提出的那样:

用负数排序numpy字符串数组?

代码在一维数组上运行,命令为:

print (sorted(a, key=natural_keys))
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是我的数据是一个10列矩阵,我想根据一列对它进行排序(比方说MyColumn).我找不到修改代码的方法来打印根据这个列排序的整个矩阵.我能想到的就是:

print (sorted(a['MyColumn'], key=natural_keys))
Run Code Online (Sandbox Code Playgroud)

但是,当然,只会MyColumn在输出中显示,尽管它已正确排序......

有没有办法打印整个Matrix?

这是我用来加载数组的命令(我将原始的imputfile简化为3列数组):

data = np.loadtxt(inputfile, dtype={'names': ('ID', 'MyColumn', 'length'),
'formats': ('int32', 'S40', 'int32')},skiprows=1, delimiter='\t')

ID  MyColumn    length
164967  BFT_job13_q1_type2  426
197388  BFT_job8_q0_type2   244
164967  BFT_job13_q0_type1  944
72406   BFT_job1_q0_type3   696
Run Code Online (Sandbox Code Playgroud)

以下是输出理想情况:

ID  MyColumn    length
72406   BFT_job1_q0_type3   696
197388  BFT_job8_q0_type2   244
164967  BFT_job13_q0_type1  944
164967  BFT_job13_q1_type2  426
Run Code Online (Sandbox Code Playgroud)

python sorting numpy matrix

3
推荐指数
1
解决办法
2371
查看次数

ElementTree:Element.remove()跳跃迭代

我有这个xml输入文件:

<?xml version="1.0"?>
<zero>
  <First>
    <second>
      <third-num>1</third-num>
      <third-def>object001</third-def>
      <third-len>458</third-len>
    </second>
    <second>
      <third-num>2</third-num>
      <third-def>object002</third-def>
      <third-len>426</third-len>
    </second>
    <second>
      <third-num>3</third-num>
      <third-def>object003</third-def>
      <third-len>998</third-len>
    </second>
  </First>
</zero>
Run Code Online (Sandbox Code Playgroud)

我的目标是删除任何<third-def>不是值的第二级.为此,我写了这段代码:

try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET
inputfile='inputfile.xml'
tree = ET.parse(inputfile)
root = tree.getroot()

elem = tree.find('First')
for elem2 in tree.iter(tag='second'):
    if elem2.find('third-def').text == 'object001':
        pass
    else:
        elem.remove(elem2)
        #elem2.clear()
Run Code Online (Sandbox Code Playgroud)

我的问题是elem.remove(elem2).它会跳过其他所有第二级.以下是此代码的输出:

<?xml version="1.0" ?>
<zero>
  <First>
    <second>
      <third-num>1</third-num>
      <third-def>object001</third-def>
      <third-len>458</third-len>
    </second>
    <second>
      <third-num>3</third-num>
      <third-def>object003</third-def>
      <third-len>998</third-len>
    </second>
  </First>
</zero>
Run Code Online (Sandbox Code Playgroud)

现在,如果我取消注释该elem2.clear() …

python iteration elementtree xml-parsing

3
推荐指数
1
解决办法
1426
查看次数

在熊猫数据框中提取具有最大值的行

我们可以使用.idxmax来获取数据帧(df)的最大值。我的问题是我有一个包含多列(超过 10 个)的 df,其中一列具有相同值的标识符。我需要提取具有最大值的标识符:

>df

id  value
a   0
b   1
b   1
c   0
c   2
c   1
Run Code Online (Sandbox Code Playgroud)

现在,这就是我想要的:

>df

id  value
a   0
b   1
c   2
Run Code Online (Sandbox Code Playgroud)

我试图通过使用来获得它df.groupy(['id']),但这有点棘手:

df.groupby(["id"]).ix[df['value'].idxmax()]

当然,那是行不通的。我担心我没有走在正确的道路上,所以我想我会问你们!谢谢!

extract dataframe pandas

1
推荐指数
1
解决办法
2003
查看次数