【发布时间】:2014-08-11 18:10:50
【问题描述】:
我有一个很大的numpy.ndarray。它基本上是一个数组数组。我想将其转换为pandas.DataFrame。我想要做的是在下面的代码中
from pandas import DataFrame
cache1 = DataFrame([{'id1': 'ABC1234'}, {'id1': 'NCMN7838'}])
cache2 = DataFrame([{'id2': 3276827}, {'id2': 98567498}, {'id2': 38472837}])
ndarr = [[4.3, 5.6, 6.7], [3.2, 4.5, 2.1]]
arr = []
for idx, i in enumerate(ndarr):
id1 = cache1.ix[idx].id1
for idx2, val in enumerate(i):
id2 = cache2.ix[idx2].id2
if val > 0:
arr.append(dict(id1=id1, id2=id2, value=val))
df = DataFrame(arr)
print(df.head())
我将外部数组和内部数组的索引映射到两个DataFrames 的索引以获取某些ID。
cache1 和 cache2 是 pandas.DataFrame。每个都有~100k 行。
这需要很长时间,比如几个小时才能完成。 有什么办法可以加快速度吗?
【问题讨论】:
-
我照原样复制了代码。
cache1['A']是内部事物(基本上是缓存的键),所以可能令人困惑。我现在更正了。 -
cache2中的最后一个条目,不应该是{'id2': 38472837}而不是{'id': 38472837}吗? -
@CTZhu:你几乎肯定是对的。
-
@DSM,在这种情况下,
multiindex可能是一种合适的方法,让我们看看 OP 怎么说。
标签: python-2.7 pandas multidimensional-array