首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pandas将csv读取为字符串类型

Pandas将csv读取为字符串类型
EN

Stack Overflow用户
提问于 2013-06-08 00:09:33
回答 4查看 119.3K关注 0票数 57

我有一个带有字母数字键的数据帧,我想将其另存为csv,稍后再读。由于各种原因,我需要显式地将此键列读取为字符串格式,我的键值是严格的数字,甚至更糟,例如: 1234E5,Pandas将其解释为浮点数。这显然使密钥变得完全无用。

问题是,当我为数据框或其中任何一列指定字符串dtype时,我只会得到垃圾信息。我这里有一些示例代码:

代码语言:javascript
复制
df = pd.DataFrame(np.random.rand(2,2),
                  index=['1A', '1B'],
                  columns=['A', 'B'])
df.to_csv(savefile)

数据框如下所示:

代码语言:javascript
复制
           A         B
1A  0.209059  0.275554
1B  0.742666  0.721165

然后我是这样读的:

代码语言:javascript
复制
df_read = pd.read_csv(savefile, dtype=str, index_col=0)

结果是:

代码语言:javascript
复制
   A  B
B  (  <

这是我的电脑出了问题,还是我做错了什么,或者仅仅是一个bug?

EN

回答 4

Stack Overflow用户

发布于 2018-09-04 06:54:38

正如Anton T在他的评论中所说的那样,pandas会使用其类型嗅探器将object类型随机转换为float类型,即使您传递了dtype=objectdtype=strdtype=np.str

由于您可以传递一个函数字典,其中键是列索引,值是转换函数,因此可以这样做(例如,对于100列)。

代码语言:javascript
复制
pd.read_csv('some_file.csv', converters={i: str for i in range(0, 100)})

如果您不知道将读取多少列,您甚至可以为比列数大得多的N传递range(0, N)

票数 10
EN

Stack Overflow用户

发布于 2021-05-02 05:17:46

如今,(pandas==1.0.5)它就能正常工作。

pd.read_csv(f, dtype=str)会将除NaN值以外的所有内容都读取为字符串(如果您不希望将此字符串解析为NAN,请使用na_filter=False)

票数 5
EN

Stack Overflow用户

发布于 2019-04-11 07:06:48

如果您事先不知道列,请使用适用于任何列的转换器:

代码语言:javascript
复制
import pandas as pd

class StringConverter(dict):
    def __contains__(self, item):
        return True

    def __getitem__(self, item):
        return str

    def get(self, default=None):
        return str

pd.read_csv(file_or_buffer, converters=StringConverter())
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16988526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档