有一种简单的方法可以使用一行代码在python中移动一个目录吗?与cd ..命令行类似的东西
我是新手使用pandas并且正在编写一个脚本,我在数据框中读取,然后对某些列进行一些计算.
有时我会有一个名为"Met"的专栏:
df = pd.read_csv(File, sep='\t', compression='gzip', header=0, names=["Chrom", "Site", "coverage", "Met"])
Run Code Online (Sandbox Code Playgroud)
Othertimes我会:
df = pd.read_csv(File, sep='\t', compression='gzip', header=0, names=["Chrom", "Site", "coverage", "freqC"])
Run Code Online (Sandbox Code Playgroud)
我需要使用"Met"列进行一些计算,所以如果它不存在,我将需要使用以下方法计算它:
df['Met'] = df['freqC'] * df['coverage']
Run Code Online (Sandbox Code Playgroud)
有没有办法检查数据框中是否存在"Met"列,如果没有添加它?
我正在尝试使用
DROP TABLE IF EXISTS <myTableName>;
Run Code Online (Sandbox Code Playgroud)
然而即使几个小时后它仍在运行.有关解决方法的任何建议吗?
我有一个表格如下:
Table1 <- data.frame(
"Random" = c("A", "B", "C"),
"Genes" = c("Apple", "Candy", "Toothpaste"),
"Extra" = c("Up", "", "Down"),
"Desc" = c("Healthy,Red,Fruit", "Sweet,Cavities,Sugar,Fruity", "Minty,Dentist")
)
Run Code Online (Sandbox Code Playgroud)
赠送:
Random Genes Extra Desc
1 A Apple Up Healthy,Red,Fruit
2 B Candy Sweet,Cavities,Sugar,Fruity
3 C Toothpaste Down Minty,Dentist
Run Code Online (Sandbox Code Playgroud)
我有另一个包含描述的表,并希望添加Genes列.例如,Table2将是:
Table2 <- data.frame(
"Col1" = c(1, 2, 3, 4, 5, 6),
"Desc" = c("Sweet", "Sugar", "Dentist", "Red", "Fruit", "Fruity")
)
Run Code Online (Sandbox Code Playgroud)
赠送:
Col1 Desc
1 1 Sweet
2 2 Sugar
3 3 Dentist
4 4 Red …Run Code Online (Sandbox Code Playgroud) 我在我的程序中遇到了问题而且我不确定我做错了什么.首先,我创建了一个空的列表列表.例如:
>>> Lists = [[]]*12
Run Code Online (Sandbox Code Playgroud)
这使:
>>> Lists
[[], [], [], [], [], [], [], [], [], [], [], []]
Run Code Online (Sandbox Code Playgroud)
但是,在尝试将值附加到单个子列表时,它会将值添加到所有子列表.例如:
>>> Lists[2].append(1)
Run Code Online (Sandbox Code Playgroud)
得到:
>>> Lists
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
Run Code Online (Sandbox Code Playgroud)
有没有办法只附加到一个子列表,以便结果如下所示:
>>> Lists
[[], [], [1], [], [], [], [], [], [], [], [], []]
Run Code Online (Sandbox Code Playgroud) 我有一个我想迭代的pandas数据帧.例如,我的数据框的简化版本可以是:
chr start end Gene Value MoreData
chr1 123 123 HAPPY 41.1 3.4
chr1 125 129 HAPPY 45.9 4.5
chr1 140 145 HAPPY 39.3 4.1
chr1 342 355 SAD 34.2 9.0
chr1 360 361 SAD 44.3 8.1
chr1 390 399 SAD 29.0 7.2
chr1 400 411 SAD 35.6 6.5
chr1 462 470 LEG 20.0 2.7
Run Code Online (Sandbox Code Playgroud)
我想迭代每个独特的基因并创建一个名为的新文件:
for Gene in df: ## this is where I need the most help
OutFileName = Gene+".pdf"
Run Code Online (Sandbox Code Playgroud)
对于上面的例子,我应该进行三次迭代,包括3个outfiles和3个数据帧:
HAPPY.pdf
chr1 123 123 HAPPY 41.1 3.4 …Run Code Online (Sandbox Code Playgroud) 我有一个包含多个列的数据框,并希望添加一个新列并根据前一个变量命名.例如:
df <- data.frame("A" = c(1, 2, 3, 4), "B" = c("a", "c", "d", "b"))
Variable <- "C"
Run Code Online (Sandbox Code Playgroud)
这是变量将要更改的函数的一部分,而不是每次指定:
df$C <- NA
Run Code Online (Sandbox Code Playgroud)
我想要一行将"变量"命名为附加列
我有一个非常大的元组列表,我想按两个元素排序.例如:
List = [('chr1', 34234, 'extrainfo'), ('chr1', 1234, 'extrainfo'), ('chr3', 4234, 'extrainfo'), ('chr1', 3241, 'extrainfo')]
Run Code Online (Sandbox Code Playgroud)
这是一个非常大的列表,我想使用以下方式排序:
List = sorted(List, key=lambda i: (i[0], int[1])))
Run Code Online (Sandbox Code Playgroud)
这在使用较小的列表(例如上面的示例)时效果很好.但是,当我使用更大的数据集运行代码时,我会收到内存错误:
Python(32306) malloc: *** mmap(size=34684928) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Traceback (most recent call last):
File "MyCode.py", line 139, in <module>
List = sorted(List, key=lambda i: (i[0], int(i[1])))
MemoryError
Run Code Online (Sandbox Code Playgroud) 我有一个文件,我转换为数据框,如下所示:
D <- data.frame(
V1 =c("B", "A_B", "A_B_C", "C_D", "A_C", "C_B_D", "C", "C_A_B_D", "B_C", "C_A_D", "A_D", "D", "A", "B_D", "A_B_D"),
V2 = c(15057, 5, 9, 1090, 4, 1250, 3943, 11, 2517, 5, 5, 2280, 5, 1735, 4))
Run Code Online (Sandbox Code Playgroud)
我需要将此数据帧转换为可用于创建4向venn图的数字列表.在此示例中,如果正确添加,则值是正确的值.我手动完成了这个,但由于我需要创建几个类似的图,我想找到一种更有效地做到这一点的方法.
library("VennDiagram")
venn.plot <- draw.quad.venn(
area1 = 48,
area2 = 20588,
area3 = 8829,
area4 = 6380,
n12 = 29,
n13 = 29,
n14 = 25,
n23 = 3787,
n24 = 3000,
n34 = 2356,
n123 = 20,
n124 = 15,
n134 = …Run Code Online (Sandbox Code Playgroud) 我有一个带有一列值的文件,我想用它来与包含两个值的字典进行比较,这两个值一起形成一个范围.
例如:文件A:
Chr1 200 ....
Chr3 300
Run Code Online (Sandbox Code Playgroud)
档案B:
Chr1 200 300 ...
Chr2 300 350 ...
Run Code Online (Sandbox Code Playgroud)
现在我为文件B创建了一个值字典:
for Line in FileB:
LineB = Line.strip('\n').split('\t')
Ranges[Chr].append(LineB)
Run Code Online (Sandbox Code Playgroud)
为了比较:
for Line in MethylationFile:
Line = Line.strip("\n")
Info = Line.split("\t")
Chr = Info[0]
Location = int(Info[1])
Annotation = ""
for i, r in enumerate(Ranges[Chr]):
n = i + 1
while (n < len(Ranges[Chr])):
if (int(Ranges[Chr][i][1]) <= Location <= int(Ranges[Chr][i][2])):
Annotation = '\t'.join(Ranges[Chr][i][4:])
n +=1
OutFile.write(Line + '\t' + Annotation + '\n')
Run Code Online (Sandbox Code Playgroud)
如果我离开while循环程序似乎没有运行(或者可能运行速度太慢而无法获得结果),因为我在每个字典中有超过7,000个值.如果我将while循环更改为if循环,程序将以非常慢的速度运行.
我正在寻找一种方法来使这个程序更快更有效