gpt4 book ai didi

pandas - 如何让 pandas.read_csv 不执行任何转换?

转载 作者:行者123 更新时间:2023-12-01 09:18:56 26 4
gpt4 key购买 nike

例如,'/tmp/test.csv' 中的值(即 010203 )表示恰好匹配 /^\d+$/ 的字符串,而不是整数:

In [10]: print open('/tmp/test.csv').read()
A,B,C
01,02,03

默认情况下, pandas.read_csv将这些值转换为整数:
In [11]: import pandas

In [12]: pandas.read_csv('/tmp/test.csv')
Out[12]:
A B C
0 1 2 3

我要告诉 pandas.read_csv不理会所有这些值(value)观。即,不执行任何转换。此外,我希望这个“请什么都不做”的指令全面应用,而不必指定任何列名或数字。

我试过这个,但一无所获:
In [13]: import csv

In [14]: pandas.read_csv('/tmp/test.csv', quoting=csv.QUOTE_ALL)
Out[14]:
A B C
0 1 2 3

唯一有效的是定义一个大的 ol' ConstantDict类,并使用它的一个实例,它总是返回恒等函数( lambda x: x )作为 converters 的值参数,从而欺骗 pandas.read_csv无所事事:
In [15]: %cpaste
class ConstantDict(dict):
def __init__(self, value):
self.__value = value
def get(self, *args):
return self.__value
--
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
::::::
In [16]: pandas.read_csv('/tmp/test.csv', converters=ConstantDict(lambda x: x))
Out[16]:
A B C
0 01 02 03

要得到这样一个简单的“请不要做任何事”的请求,要花很多功夫。 (如果我让 ConstantDict 防弹,那就更像是体操了。)

没有更简单的方法来实现这一目标吗?

最佳答案

df = pd.read_csv('temp.csv', dtype=str)
来自 docs :

dtype : Type name or dict of column -> type, default None
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32} (Unsupported with engine=’python’). Use str or object to preserve and not interpret dtype.

关于pandas - 如何让 pandas.read_csv 不执行任何转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37715038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com