如何为数据和索引单独指定带有read_csv的d​​type

时间:2016-06-24 00:16:17

标签: python pandas

我在加载pandas数据帧时尝试指定值的dtype,但仅针对数据框中的值而不是索引。这可能吗?

from io import StringIO
my_csv = StringIO('''b, c\nx, 1, 2\ny, 3, 2''')

我会假设以下内容可行:

pd.read_csv(my_csv, dtype='int64')

但是如果失败了:

ValueError: invalid literal for int() with base 10: 'x'

我可以在不指定dtype的情况下加载表格,然后将其设置为值,但有没有办法在阅读表格时直接执行此操作?

1 个答案:

答案 0 :(得分:2)

一种方法是只读取标题以获取列名称,然后使用所需的dtype读取它们zip并再次读取csv:

In [6]:
t="""b,c
x,1,2
y,3,2"""
cols = pd.read_csv(io.StringIO(t), nrows=1).columns
dtyp = dict(zip(cols,['int64'] * len(cols)))
pd.read_csv(io.StringIO(t), dtype=dtyp).info()

<class 'pandas.core.frame.DataFrame'>
Index: 2 entries, x to y
Data columns (total 2 columns):
b    2 non-null int64
c    2 non-null int64
dtypes: int64(2)
memory usage: 48.0+ bytes
相关问题