Pandas 如何在从unix box读取.zip文件后返回数据帧

Pandas 如何在从unix box读取.zip文件后返回数据帧,pandas,paramiko,Pandas,Paramiko,我在某个unix服务器上有一个abc.zip文件。 我需要读取abc.zip文件的内容并将结果存储在dataframe中 我尝试使用paramiko从unix服务器读取该文件,但无法将结果存储在dataframe中 import paramiko ssh_client=paramiko.SSHClient() ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_client.connect(hostname='

我在某个unix服务器上有一个abc.zip文件。 我需要读取abc.zip文件的内容并将结果存储在dataframe中

我尝试使用paramiko从unix服务器读取该文件,但无法将结果存储在dataframe中

import paramiko
ssh_client=paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname='xyx',username='abc',password='qwe')
#using unzip is creating 3 lines which are not needed in dataframe , so 
#using tail.
stdin,stdout,stderr=ssh_client.exec_command("unzip -c path/abc.zip | tail -n +3")
#created an empty list.
unix_file =[]
#read the data from stdout and appended in list
for line in stdout.readlines():
    unix_file.append(line)
#tried creating Dataframe by iterating over unix_file list
df = pd.DataFrame([sub.split("\t") for sub in unix_file]) 
我希望Dataframe包含标题和数据,但我得到的实际o/p是Dataframe将列视为数据的一部分,默认情况下将[0,1,2]值指定为列


任何更好的读取.zip文件和处理选项卡分隔列表的方法都会有所帮助。

如果
读取\u csv
对您有效,请将其用于远程数据:

stdin,stdout,stderr = ssh_client.exec_command("unzip -c path/abc.zip | tail -n +3")
pyitgdf = pd.read_csv(stdout, sep='\t', header=0)

我做了一些变通办法,可能不是最好的办法,但它奏效了

"

`


我知道有一些干净的方法可以实现这一点,但没有得到它

您没有告诉我们任何关于.zip文件内容格式的信息+您是否能够从本地zip文件构建
数据帧
?该.zip文件的内容是一个txt文件。。。是的,在本地机器中,我可以使用sep='\t'的read\u csv读取zip文件。。。但是,在unix主机服务器上读取zip文件的内容并将其转换为干净的数据帧是我面临的问题。请向我们展示使用
read\u csv
处理本地zip文件的代码。这仅仅是两行代码
patht=r'D:\ITG\abc.zip'pyitgdf=pd.read\u csv(patht,sep='\t',header=0)
抱歉,它不起作用。。。获取pandas.\u libs.parsers.TextReader.\uuu cinit.\uuuuuu pandas.errors.EmptyDataError中第545行的错误文件“pandas\u libs\parsers.pyx”:没有要从文件中解析的列`
stdin,stdout,stderr=ssh_client.exec_command("unzip -c /ges2/data/TransactionData/ITG/Well_extract_20120406_test.zip | tail -n +3")
unix_file =[]
for line in stdout.readlines():
    unix_file.append(line)

output = [line.rstrip() for line in unix_file]

col = output[0].split('\t')

data = output[1:]

pyitgdf = pd.DataFrame([sub.split('\t') for sub in data], columns = col)
print(pyitgdf.head(5))