温暖的卡布奇诺 · 用python的pandas读取excel文 ...· 1 月前 · |
被表白的日记本 · 【python】读取excel的行列内容,p ...· 1 月前 · |
好帅的乒乓球 · Pandas读取某列、某行数据——loc、i ...· 1 月前 · |
踏实的佛珠 · Python - 根据多个条件分组和最接近的整数· 9 月前 · |
勤奋的香槟 · 驻日本使馆利用公共假日开展视频办证服务 - ...· 1 年前 · |
骑白马的小蝌蚪 · 怎么解log方程_指数方程和对数方程的解法_ ...· 1 年前 · |
玩足球的打火机 · jQuery动态创建元素及添加节点 - 简书· 1 年前 · |
我有一个带有字母数字键的数据帧,我想将其另存为csv,稍后再读。由于各种原因,我需要显式地将此键列读取为字符串格式,我的键值是严格的数字,甚至更糟,例如: 1234E5,Pandas将其解释为浮点数。这显然使密钥变得完全无用。
问题是,当我为数据框或其中任何一列指定字符串dtype时,我只会得到垃圾信息。我这里有一些示例代码:
df = pd.DataFrame(np.random.rand(2,2),
index=['1A', '1B'],
columns=['A', 'B'])
df.to_csv(savefile)
数据框如下所示:
A B
1A 0.209059 0.275554
1B 0.742666 0.721165
然后我是这样读的:
df_read = pd.read_csv(savefile, dtype=str, index_col=0)
结果是:
A B
B ( <
这是我的电脑出了问题,还是我做错了什么,或者仅仅是一个bug?
发布于 2018-09-04 06:54:38
正如Anton T在他的评论中所说的那样,
pandas
会使用其类型嗅探器将
object
类型随机转换为
float
类型,即使您传递了
dtype=object
、
dtype=str
或
dtype=np.str
。
由于您可以传递一个函数字典,其中键是列索引,值是转换函数,因此可以这样做(例如,对于100列)。
pd.read_csv('some_file.csv', converters={i: str for i in range(0, 100)})
如果您不知道将读取多少列,您甚至可以为比列数大得多的N传递
range(0, N)
。
发布于 2021-05-02 05:17:46
如今,(pandas==1.0.5)它就能正常工作。
pd.read_csv(f, dtype=str)
会将除NaN值以外的所有内容都读取为字符串(如果您不希望将此字符串解析为NAN,请使用
na_filter=False
)
发布于 2019-04-11 07:06:48
如果您事先不知道列,请使用适用于任何列的转换器:
import pandas as pd
class StringConverter(dict):
def __contains__(self, item):
return True
def __getitem__(self, item):