小编The*_*man的帖子

使用 Python 遍历文件时请参考上一行

我有一个如下所示的循环:

with open(file, 'r') as f:
    next(f)
    for line in f:
        print line
Run Code Online (Sandbox Code Playgroud)

但我不想在每次迭代时只打印当前行,我还想打印前一行,如下所示,但代码没有给我我正在寻找的内容:

with open(file, 'r') as f:
    next(f)
    for line in f:
        previous(f)    #this does not go to the previous line
        print line
        next(f)
        print line
        next(f)
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的:

输入:

line1
line2
line3
Run Code Online (Sandbox Code Playgroud)

输出:

line1
line2
line2
line3
Run Code Online (Sandbox Code Playgroud)

python

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

Python中'empty'else语句的必要性

我现在在一些python教程中多次看过以下内容.

if True:
    do something
else:
    pass
Run Code Online (Sandbox Code Playgroud)

对我来说,else语句似乎是不必要的.这只是为了使代码更清晰吗?或者是否有一些安全原因需要这样做?谢谢.

python

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

在python中使用splitlines()只能得到一些行

我目前正在从输入文件创建一个列表,如下所示:

list = inputFile.read().splitlines()
Run Code Online (Sandbox Code Playgroud)

然后在手动迭代并制作我关心的项目/行的第二个列表(这是第2,6,10,14,18行......).是否有更快的方法来splitlines()自动执行此操作,仅list包含我关心的行?

python file

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

处理 Pandas 中的重复数据

我正在尝试绘制一些数据随时间变化的散点图,并将标准偏差作为误差线。我对两个不同样品 A 和 B 的每个时间点进行三次测量。

Date A1 A2 A3 B1 B2 B3
1/1/17 4 5 6 2 3 4
1/2/17 6 7 8 5 6 4
Run Code Online (Sandbox Code Playgroud)

所以我正在导入这样的数据:

import pandas as pd
columns = ['Date', 'A1', 'A2', 'A3', 'B1', 'B2', 'B3']
dat = pd.read_csv('data', sep='\t', names=columns)
Run Code Online (Sandbox Code Playgroud)

那么我如何组合重复列以便我可以计算标准偏差然后绘图?我正在考虑重命名 A 和 B 列,使它们相同,然后可以合并?

python pandas

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

检查pandas DataFrame列中的字符串中是否包含字符串

我有一个非常简单的pandas DataFrame,我想选择DataFrame中在其中包含另一个字符串的列中具有数据的部分

因此,如果这是我的DataFrame并且我想要包含some在该Loc列中的那些列,该怎么做?

             Loc 
0      'something'  
1      'nothing'  
Run Code Online (Sandbox Code Playgroud)

我尝试了两件事:

df['some' in df['Loc']]
df[df.Loc.contains('some')]
Run Code Online (Sandbox Code Playgroud)

但是,两种解决方案都行不通。

python dataframe pandas

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

从pandas DataFrame列创建索引

我有一个看起来像这样的DataFrame(其中'ID'是索引的名称):

                      VAF
ID  
chr1-115227855-T-A  0.002491
chr1-115227855-T-C  0.005449
chr1-115227856-C-A  0.000466
chr1-115227856-C-G  0.000311
chr1-115227856-C-T  0.002331
Run Code Online (Sandbox Code Playgroud)

第二个DataFrame看起来像这样:

    Chrom   Loc WT  Var Change  ConvChange  AO  DP  VAF IntEx   Gene    Upstream    Downstream  Individual
0   chr1    115227855   T   C   T>C T>C 43  16155   0.00266171  TIII    TIIIa   NaN NaN 1
1   chr1    115227856   C   T   C>T C>T 25  16179   0.00154521  TIII    TIIIa   NaN NaN 1
2   chr1    115227857   C   T   C>T C>T 20  16178   0.00123625  TIII    TIIIa   NaN NaN 1
3   chr1    115227858   A   T   A>T T>A …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

数据框中列表的 Pandas 平均值

我有一个 pandas DataFrame,其中包含包含列表的列。我正在尝试获取本专栏中列表的含义。

这是我的 DataFrame 的示例:

    Loc         Background
0   115227854   [0.000120481927711]
1   115227854   [0.000129117642312, 0.000131429072111, 0.00016...
2   115227855   [0.000123193166886]
3   115227855   [0.000142845482001, 0.000184789750329, 0.00018...
4   115227856   [0.000173490631506]
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情来设置一个新Mean列等于该列中找到的每个列表中数据的平均值Background

sig_vars['Mean'] = sig_vars['Background'].mean()
Run Code Online (Sandbox Code Playgroud)

如果需要的话,这里是数据框:

df = {'Background': {0: [0.00012048192771084337],
  1: [0.00012911764231185137,
   0.0001314290721107509,
   0.000163015792154865,
   0.00018832391713747646,
   0.00019627513412134165,
   0.00020383723596708027,
   0.0002114408734430263,
   0.00022564565426983117,
   0.000247843759294141],
  2: [0.00012319316688567673],
  3: [0.00014284548200146926,
   0.00018478975032851512,
   0.00018864365214110544,
   0.00019392685725367248,
   0.00022931689046296532,
   0.00023965141612200435,
   0.00036566589684372596,
   0.00043096760847454704,
   0.0004584752423369138],
  4: [0.00017349063150589867]},
 'Loc': {0: 115227854, 1: 115227854, 2: 115227855, 3: 115227855, 4: 115227856}}
Run Code Online (Sandbox Code Playgroud)

python pandas

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

逐步浏览python中的字典中的项目

我有这样的字典:

{'AAAGGG': ['AGAGAGAA', 'AGAGAGAG'], 'AAAGGC': ['AGAGAGAG']})
Run Code Online (Sandbox Code Playgroud)

我想逐步执行每个键,然后逐步查看其相应值的字符.所以像这样:

for key in myDict:
    for eachValue in key:
        for char in eachValue:
            do something
Run Code Online (Sandbox Code Playgroud)

希望有一种简单的方法可以做到这一点.

python dictionary

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

Grep使用-A和-B标志输出奇怪的字符进行fastq分析

我有一个看起来像这样的文件:

@HISEQ:331:C85AMANXX:8:1101:16636:1980 1:N:0:ATCACGAC
NTCTATAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
#<<BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF
@HISEQ:331:C85AMANXX:8:1101:2337:2047 1:N:0:ATCACGAC
CTGTGAAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
BBBBBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFF<FFF<FF<BFFFF<FFFFBFFFBFFFFF<B
Run Code Online (Sandbox Code Playgroud)

我使用以下grep命令:

grep -B 1 -A 2 'AGGCATCAGCCGGA' file.fastq | head > out.fastq
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样,你可以在第5行和第10行看到输出两个破折号,我不希望它如此:

@HISEQ:331:C85AMANXX:8:1101:16636:1980 1:N:0:ATCACGAC
NTCTATAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
#<<BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF
--
@HISEQ:331:C85AMANXX:8:1101:2337:2047 1:N:0:ATCACGAC
CTGTGAAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
BBBBBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFF<FFF<FF<BFFFF<FFFFBFFFBFFFFF<B
--
Run Code Online (Sandbox Code Playgroud)

有没有办法在第5行和第10行没有破折号的情况下输出?

bash sequencing fastq

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

使用python更新终端中的一行

我不知道从哪里开始,所以即使把我指向正确的方向也会有所帮助.我想使用python在终端中连续更新一行,但无法弄清楚如何执行此操作.我正在考虑top使用不断更新的信息但不打印新行.

如此简单的事情:

for i in myList:
    print i #but overwrite previous output rather than putting on new line
Run Code Online (Sandbox Code Playgroud)

python

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

在python中使用os.system mkdir和变量

我试图在python2中使用os.system来创建一个存储在变量名下的新目录,但是不使用变量设置的字符串,bash调用使用变量名并在pwd中创建一个目录.

from os import system
outputDir = ~/Desktop/test
system('mkdir outputDir')
Run Code Online (Sandbox Code Playgroud)

python bash

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

从另一个脚本运行python脚本永远重复

我在python中从第一个脚本运行第二个脚本时遇到问题.为了简化我正在做的事情,以下代码说明了我提交的内容

file1.py:

from os import system
x = 1
system('python file2.py')
Run Code Online (Sandbox Code Playgroud)

file2.py:

from file1 import x
print x
Run Code Online (Sandbox Code Playgroud)

麻烦的是当我运行file1.py x时会永远打印直到被打断.有什么我做错了吗?

python

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

标签 统计

python ×11

pandas ×4

bash ×2

dataframe ×1

dictionary ×1

fastq ×1

file ×1

sequencing ×1