【发布时间】:2017-10-20 19:37:02
【问题描述】:
DataFrame 索引的默认 dtype 是 int64,我想将其更改为 int32。
我尝试使用pd.DataFrame.set_index 和int32 的NumPy 数组更改它,还尝试使用dtype=np.int32 创建新索引。它不起作用,总是返回int64的索引。
有人可以展示一个工作代码来生成具有int32 大小的 Pandas 索引吗?
我使用 conda Pandas v0.20.1。
【问题讨论】:
-
这似乎不可能...我可能错了,但我还没有找到方法...
pd.Index(np.arange(10, dtype=np.32), dtype=np.int32)- 返回Int64Index([...], dtype='int64') -
好吧,我也做了同样的事情,但想不通。现在尝试在这里查看源代码github.com/pandas-dev/pandas/tree/…,但看不到这种变化发生在哪里。
-
使用
int32的目的是为了节省内存吗?索引中的值是连续的还是规则间隔的?如果是这样,那么RangeIndex可能就足够了。这是Int64Index的一个节省内存的特例。它通过仅存储开始、停止和步进值而不枚举范围内的所有值来节省内存。 -
@unutbu 是的,这是正确的答案。这正是我从核心贡献者github.com/pandas-dev/pandas/issues/16404 那里学到的。
标签: python pandas numpy indexing