Python 从大量条目创建可编辑列表
我有一个超过600000条目的文件。它基本上包括:Python 从大量条目创建可编辑列表,python,arrays,numpy,Python,Arrays,Numpy,我有一个超过600000条目的文件。它基本上包括: user1 choice1 user1 choice2 user2 choice3 user2 choice1 . . . . user400000 choice60 当我尝试用常用方法(如下所示)创建字典时,idle停止响应 d = {} with open("file.txt") as f: for line in f: (key, val) = line.split() d[key] = val 我
user1 choice1
user1 choice2
user2 choice3
user2 choice1
.
.
.
.
user400000 choice60
当我尝试用常用方法(如下所示)创建字典时,idle停止响应
d = {}
with open("file.txt") as f:
for line in f:
(key, val) = line.split()
d[key] = val
我想从这个大的条目文件中得到一个易于快速操作的列表/词典。最有效的方法是什么 允许轻松操作此数量的数据。您的数据是一系列用户
标签,带有与其关联的标量数据点
import pandas as pd
s = pd.read_csv('file.txt', sep=' ', header=None, index_col=0, squeeze=True)
本指令要求pandas
将文件数据加载到序列对象中:
- 列以空格分隔(
)sep=''
- 文件没有标题标题,第一行已经是数据(
)header=None
- 我们希望使用第一列作为索引来操作日期(
)index\u col=0
- 默认情况下,
构建一个pandas
对象,但是如果它包含一列数据,我们可以请求一个DataFrame
(系列
)squere=True
s
是一个在用户标签上索引的系列
对象,我们现在可以使用它访问数据:
In [37]: s.head()
Out[37]:
0
user0 104106
user1 31024
user2 82993
user3 211414
user4 499070
Name: 1
In [38]: s['user3']
Out[38]: 211414
有了600000行的'file.txt'
,加载s
大约需要一秒钟。在s
上执行类似dict的访问是即时的。允许轻松操作这一数量的数据。您的数据是一系列用户
标签,带有与其关联的标量数据点
import pandas as pd
s = pd.read_csv('file.txt', sep=' ', header=None, index_col=0, squeeze=True)
本指令要求pandas
将文件数据加载到序列对象中:
- 列以空格分隔(
)sep=''
- 文件没有标题标题,第一行已经是数据(
)header=None
- 我们希望使用第一列作为索引来操作日期(
)index\u col=0
- 默认情况下,
构建一个pandas
对象,但是如果它包含一列数据,我们可以请求一个DataFrame
(系列
)squere=True
s
是一个在用户标签上索引的系列
对象,我们现在可以使用它访问数据:
In [37]: s.head()
Out[37]:
0
user0 104106
user1 31024
user2 82993
user3 211414
user4 499070
Name: 1
In [38]: s['user3']
Out[38]: 211414
有了600000行的
'file.txt'
,加载s
大约需要一秒钟。在s
上执行类似dict的访问是即时的。假设所有类型都正确,这应该可以工作。您是否正在打印d
——之后您没有显示?那可能会把你锁起来。在循环之后尝试打印len(d)。您想如何操作?问题是您试图将“大文件”存储在变量中。最好是一次只做一行操作,而不存储它。但这可能不可行。@bernie:该死,你看得更快了:D@bernie很抱歉。我一直在玩numpy,并且丢失了我的原始代码。所以我找到了一些相似的东西,让我了解我正在处理的事情。没有注意到int.@cmd,我想返回一个用户名列表和符合条件的选项(即,以前没有选择过)。所以基本上choice1,choice2对user1可用,但对user2不可用。假设所有类型都正确,这应该可以工作。您是否正在打印d
——之后您没有显示?那可能会把你锁起来。在循环之后尝试打印len(d)。您想如何操作?问题是您试图将“大文件”存储在变量中。最好是一次只做一行操作,而不存储它。但这可能不可行。@bernie:该死,你看得更快了:D@bernie很抱歉。我一直在玩numpy,并且丢失了我的原始代码。所以我找到了一些相似的东西,让我了解我正在处理的事情。没有注意到int.@cmd,我想返回一个用户名列表和符合条件的选项(即,以前没有选择过)。所以基本上choice1,choice2对user1可用,但对user2不可用。