小编Sum*_*Ela的帖子

将pandas表写入impala

使用impyla模块,我已经将impala查询的结果下载到pandas数据框中,完成分析,现在想将结果写回impala上的表,或者至少写入hdfs文件.

但是,我找不到有关如何执行此操作的任何信息,甚至无法找到如何ssh到impala shell并从那里写表.

我想做什么:

from impala.dbapi import connect
from impala.util import as_pandas

# connect to my host and port
conn=connect(host='myhost', port=111) 

# create query to save table as pandas df
create_query = """
     SELECT * FROM {}
     """.format(my_table_name)

# run query on impala
cur = conn.cursor()
cur.execute(create_query)

# store results as pandas data frame
pandas_df = as_pandas(cur)
cur.close()  
Run Code Online (Sandbox Code Playgroud)

一旦我完成了pandas_df需要做的任何事情,将这些结果作为表保存回impala.

# create query to save new_df back to impala
save_query = """
    CREATE TABLE new_table AS
        SELECT * 
        FROM pandas_df
    """ …
Run Code Online (Sandbox Code Playgroud)

python hadoop hdfs impala

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

Pyspark 中的多个 WHEN 条件实现

我的 T-SQL 代码低于我在 Pyspark 中转换的代码,但给了我错误

CASE
            WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'OUT' AND time_on_site.timespent_sec < 72000 THEN 1  --  20 hours 
            WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'OUT' AND time_on_site.timespent_sec >= 72000 THEN 0
            WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'IN' AND time_on_site.timespent_sec <= 28800 THEN 2  -- 8 hours
            WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'IN' AND time_on_site.timespent_sec > 28800 THEN 3
            WHEN time_on_site.type_flag = 'TYPE4' THEN 4
            ELSE NULL
         END AS "type"
Run Code Online (Sandbox Code Playgroud)

下面是我的 …

t-sql case-when .when apache-spark-sql pyspark

4
推荐指数
2
解决办法
6394
查看次数

将用户 arg 传递给 DESeq2 函数

DESeq我正在尝试使用从命令行输入的参数在 RScript 中运行。我曾经optparse解析用户参数并尝试将设计参数传递到函数中DESeqDataSetFromMatrix()

我直接测试了这个功能,效果很好:

DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=~taxonomy)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试传递变量opt$design(这是一个字符串=“~taxonomy”),我会收到以下错误:

DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=opt$design)
Run Code Online (Sandbox Code Playgroud)

错误:$ 运算符对于原子向量无效执行停止

我尝试过/noquote()的各种组合并将整个命令创建为字符串以传递给函数,但没有任何效果。任何建议将不胜感激。catpasteDESeqDataSetFromMatrix()

解决方案

感谢 Ben Bolker 下面的回答,以下方法有效:

DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=as.formula(opt$design))
Run Code Online (Sandbox Code Playgroud)

arguments r optparse string-parsing bioconductor

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

在 Pandas groupby 对象上获取 count() 函数的最大值

问题

使用 Pandas,我需要为每个 groupby 对象取回具有最大计数的行。

数据集

我有一个名为“匹配”的数据框,如下所示:

FeatureID gene pos 0 1_1_1 KRAS_1 6 1 1_1_1 KRAS_2 8 2 1_1_1 KRAS_3 11 3 1_1_1 NRAS_1 3 4 1_1_1 NRAS_2 11 5 1_1_1 NRAS_3 84 6 1_1_10 KRAS_1 4 7 1_1_10 KRAS_2 3 8 1_1_10 KRAS_3 14 9 1_1_10 NRAS_1 4 10 1_1_10 NRAS_2 6 11 1_1_10 NRAS_3 83

我试过的

我需要按 FeatureID 将数据框组合在一起,然后获取每组中的位置计数:

matches.groupby(["FeatureID", "gene"]).count()
Run Code Online (Sandbox Code Playgroud)

结果是:

FeatureID gene 1_1_1 KRAS_1 6 KRAS_2 8 KRAS_3 11 NRAS_1 3 NRAS_2 11 NRAS_3 84 …

python pandas pandas-groupby

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