Python 是否存在R’的等价物;熊猫中的s data.table fread cmd关键字?

Python 是否存在R’的等价物;熊猫中的s data.table fread cmd关键字?,python,r,pandas,data.table,fread,Python,R,Pandas,Data.table,Fread,R的data.table读取主力“fread”的一个非常有用的方面是“cmd”关键字,使用该关键字可以通过编程方式构建一个shell命令并将其传递给fread,以将shell命令的输出作为data.table读入 这对于交互式使用非常强大,因为命令可以是任何字符串,例如ssh字符串,它将在远程主机上运行,并且可以将基本解析延迟到简单的grep/sec/awk,所有这些都放在一行中,同时防止需要创建临时目录和文件,并采取其他步骤获取远程文件 从最新的pandas文档中可以看出,在任何pd.read

R的data.table读取主力“fread”的一个非常有用的方面是“cmd”关键字,使用该关键字可以通过编程方式构建一个shell命令并将其传递给fread,以将shell命令的输出作为data.table读入

这对于交互式使用非常强大,因为命令可以是任何字符串,例如ssh字符串,它将在远程主机上运行,并且可以将基本解析延迟到简单的grep/sec/awk,所有这些都放在一行中,同时防止需要创建临时目录和文件,并采取其他步骤获取远程文件


从最新的pandas文档中可以看出,在任何pd.read_*方法中似乎都没有等效的方法。这不是一个功能吗?是否有一种简单的替代方法

正如@sammywemmy所指出的,有两种选择。第一个,比R等价物稍微详细一点,是像这样使用
子流程

import pandas as pd, import subprocess
with subprocess.Popen("shell_cmd", shell=True, stdout=subprocess.PIPE) as p:
    df = pd.read_csv(p.stdout)
import datatable as dt
df = dt.fread(cmd="shell_cmd").to_pandas()
一种更有效、更不冗长的替代方法是使用
datatable
包并执行以下操作:

import pandas as pd, import subprocess
with subprocess.Popen("shell_cmd", shell=True, stdout=subprocess.PIPE) as p:
    df = pd.read_csv(p.stdout)
import datatable as dt
df = dt.fread(cmd="shell_cmd").to_pandas()

您还可以选择以本机方式使用
数据表
帧类型。

这说明了如何将子流程模块与数据表组合。Pandas没有用于读取外壳输出的内置模块。另一个选择是与ipython合作,并将ur操作的结果传递给pandas。它的目的是复制R的datatable,提供了命令选项。@sammywemmy真棒,我刚刚尝试过,似乎我可以通过导入datatable获得类似的简洁性,如dt,然后再导入dt.fread(cmd=…)。对于_pandas(),blog post也是一个不错的选择,但是创建子流程会更加冗长,在大的框架上可能会更慢。如果您已经找到了所发布问题的解决方案,请自行回答,因为可能有其他人正在研究相同的功能。