我在加载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
的情况下加载表格,然后将其设置为值,但有没有办法在阅读表格时直接执行此操作?
答案 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