pandas 中是否有与 R 的 data.table fread cmd 关键字等效的关键字?
Is there an equivalent of R’s data.table fread cmd keyword in pandas?
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
框架类型进行本地工作。
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
框架类型进行本地工作。