R的data.table读取主力"fread"的一个非常有用的方面是"cmd"关键字,使用该关键字可以以编程方式构建shell命令并将其传递给fread,以将shell命令的输出读取为data.table。
这对于交互式使用来说非常强大,因为命令可以是任何字符串,例如ssh,它将在远程主机上运行,并且可以将基本解析推迟到一行中的简单grep/sec/awk,同时防止需要创建临时目录和文件,并采取额外步骤来获取远程文件。
从最新的pandas文档中可以看出,在任何pd.read_*方法中似乎都没有等价的方法。这不是一个功能吗?有没有一个简单的等价物可以代替人们使用?
@sammywemmy指出,有两种选择。第一个,比R等价物稍微详细一点的是使用subprocess
,如下所示:
import pandas as pd, import subprocess
with subprocess.Popen("shell_cmd", shell=True, stdout=subprocess.PIPE) as p:
df = pd.read_csv(p.stdout)
一个更高效、更不冗长的替代方案是使用datatable
包并执行以下操作:
import datatable as dt
df = dt.fread(cmd="shell_cmd").to_pandas()
您也可以选择本机使用datatable
帧类型。