Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将扩展名为.txt的逗号sep值作为数组读入python?_Python_R - Fatal编程技术网

如何将扩展名为.txt的逗号sep值作为数组读入python?

如何将扩展名为.txt的逗号sep值作为数组读入python?,python,r,Python,R,我是生物学家,对Python非常陌生,在此之前,我学了一点R 因此,我有一个非常大的文本文件(3GB,太大,无法在R中处理),所有值都是逗号分隔的,但扩展名是.txt(我不知道这是否是必要的信息)。我想做的是: 将其作为对象读入python,该对象相当于R中的dataframe, 去掉中间的柱子 减小对象的大小 将其写入txt文件 其余的去R 如果你能帮助我,我将非常高兴。 谢谢我不熟悉r数据帧,但是熊猫提供了将csv读入熊猫数据帧的功能: from pandas import read_csv

我是生物学家,对Python非常陌生,在此之前,我学了一点R

因此,我有一个非常大的文本文件(3GB,太大,无法在R中处理),所有值都是逗号分隔的,但扩展名是.txt(我不知道这是否是必要的信息)。我想做的是:

将其作为对象读入python,该对象相当于R中的dataframe, 去掉中间的柱子 减小对象的大小 将其写入txt文件

其余的去R

如果你能帮助我,我将非常高兴。
谢谢

我不熟悉r数据帧,但是
熊猫
提供了将csv读入熊猫数据帧的功能:

from pandas import read_csv    
df = read_csv('yourfile.txt')
print df
print df['Line']

如果这不是您需要的,您可以使用模块将csv的每一行作为python列表进行迭代,并将其放入您想要的任何数据结构中。

我不熟悉r dataframe,但
pandas
提供了将csv读入pandas dataframe的功能:

from pandas import read_csv    
df = read_csv('yourfile.txt')
print df
print df['Line']

如果这不是您所需要的,您可以使用模块以python列表的形式迭代csv的每一行,并将其放入您想要的任何数据结构中。

没有必要先进入python。你的问题看起来很像。标记为正确答案的答案迭代读取大文件,并创建一个新的较小文件。其他好的替代方法是使用
sqlite
sqdf
包,或者使用
ff
包。最后一种方法尤其有效,因为与行数相比,列数较少

没有必要先研究python。你的问题看起来很像。标记为正确答案的答案迭代读取大文件,并创建一个新的较小文件。其他好的替代方法是使用
sqlite
sqdf
包,或者使用
ff
包。最后一种方法尤其有效,因为与行数相比,列数较少

这将占用最少的内存,因为它不会一次加载整个文件

import csv
with open('in.txt', 'rb') f_in, open('out.csv', 'wb') as f_out:
    reader = csv.reader(f_in)
    writer = csv.writer(f_out)
    for row in reader:
        # keep first two columns and last three columns
        writer.writerow(row[:2] + row[-3:])

注意:如果使用Python 3,请将文件模式分别更改为
'r'
'w'

这将占用最少的内存,因为它不会一次加载整个文件

import csv
with open('in.txt', 'rb') f_in, open('out.csv', 'wb') as f_out:
    reader = csv.reader(f_in)
    writer = csv.writer(f_out)
    for row in reader:
        # keep first two columns and last three columns
        writer.writerow(row[:2] + row[-3:])

注意:如果使用Python 3,请将文件模式分别更改为
'r'
'w'

Per(新功能和错误修复:开发)新开发版本3.0.0应允许r使用页面文件/交换。在windows中,您需要将R_MAX_MEM_SIZE设置为适当大的值。

Per(新功能和错误修复:开发)新开发版本3.0.0应允许R使用页面文件/交换。在windows中,您需要将R_MAX_MEM_SIZE设置为适当大的值。

如果您坚持使用预处理步骤,使用linux命令工具是一个非常好且快速的选择。如果您使用Linux,这些工具已经安装,在Windows下,您需要首先安装MinGW或Cygwin。已经提供了一些很好的指针。本质上,您可以使用
awk
工具迭代处理文本文件,在运行时创建输出文本文件。复制我链接的SO问题的公认答案:

awk -F "," '{ split ($8,array," "); sub ("\"","",array[1]); sub (NR,"",$0); sub (",","",$0); print $0 > array[1] }' file.txt 

这将读取文件,获取8列,并将其转储到一个文件中。有关更多详细信息,请参见答案。

如果您坚持使用预处理步骤,那么使用linux命令工具是一个非常好且快速的选择。如果您使用Linux,这些工具已经安装,在Windows下,您需要首先安装MinGW或Cygwin。已经提供了一些很好的指针。本质上,您可以使用
awk
工具迭代处理文本文件,在运行时创建输出文本文件。复制我链接的SO问题的公认答案:

awk -F "," '{ split ($8,array," "); sub ("\"","",array[1]); sub (NR,"",$0); sub (",","",$0); print $0 > array[1] }' file.txt 

这将读取文件,获取8列,并将其转储到一个文件中。有关更多详细信息,请参见答案。

我推荐。对我来说,这更像是
perl
甚至
sed
的工作。。。如果看不到至少一行并准确理解删除内部列的规则,就很难判断…也许从R中的
sqldf
包中读取.csv.sql可能有用:。使用SQL只能从csv中提取所需字段。我在处理大文件方面有点运气,但没有你那么大。或者unix命令行:
cut-f1-3,8-12-d,smallerfile.txt
(如果引号中有逗号,可能会失败),我建议使用。对我来说,这看起来更像是
perl
甚至
sed
。。。如果看不到至少一行并准确理解删除内部列的规则,就很难判断…也许从R中的
sqldf
包中读取.csv.sql可能有用:。使用SQL只能从csv中提取所需字段。我在处理大文件方面有点运气,但没有你那么大。或者unix命令行:
cut-f 1-3,8-12-d,smallerfile.txt
(如果引号中有逗号,可能会失败)在不迭代的情况下读取整个文件可能也会占用太多内存。谢谢你的回答。我使用Mac OS 10.6,最近我通过安装EPD免费分发的几个软件包+python2.7解决了计算机(OS)-python版本模块之间的兼容性问题。我不知道pandas是否与我拥有的兼容。现在我来检查一下。不反复阅读整个文件可能也会占用太多内存。谢谢你的回答。我使用Mac OS 10.6,最近我通过安装EPD免费分发的几个软件包+python2.7解决了计算机(OS)-python版本模块之间的兼容性问题。我不知道pandas是否与我拥有的兼容。我现在会检查它。这个一般的CRAN链接没有真正的帮助,你能提供一个更具体的链接吗?我的操作系统是Mac os X 10.6.8。我试图加载该文本文件的简化版本(~400 MB),但R被冻结。我