【发布时间】:2013-01-28 13:29:18
【问题描述】:
我有一个熊猫DataFrame,是这样创建的:
import pandas as pd
wb = pd.io.parsers.ExcelFile('/path/to/data.xlsx')
df = wb.parse(wb.sheet_names[0])
生成的数据框有大约十二列,所有列的长度完全相同(大约 150K)。
对于大多数列,以下操作几乎是瞬间完成的
aset = set(df.acolumn)
但是对于某些列,同样的操作,例如
aset = set(df.weirdcolumn)
需要 > 10 分钟! (或者更确切地说,操作在 10 分钟超时期限到期之前无法完成。)相同数量的元素!
还是很陌生:
In [106]: set([type(c) for c in df.weirdcolumn])
Out[106]: set([numpy.float64])
In [107]: df.weirdcolumn.value_counts()
Out[107]: []
看来专栏的内容都是nans
In [118]: all(np.isnan(df.weirdcolumn.values))
Out[118]: True
但这并不能解释前面提到的减速,因为下面的操作只需要几秒钟:
In [121]: set([np.nan for _ in range(len(data))])
Out[121]: set([nan])
我已经没有办法找出上述大幅放缓的原因。欢迎提出建议。
【问题讨论】: