【发布时间】:2017-05-31 13:53:03
【问题描述】:
我已经对其进行了测试,并且还检查了没有明显差异的文档。无论哪种方式,我都想问一下以防万一。
您是否认为 read_csv 应该只用于 csv,即使它适用于其他类型?而 read_table 适用于任何事情?以及它们存在时是否相同?
【问题讨论】:
标签: python-3.x pandas
我已经对其进行了测试,并且还检查了没有明显差异的文档。无论哪种方式,我都想问一下以防万一。
您是否认为 read_csv 应该只用于 csv,即使它适用于其他类型?而 read_table 适用于任何事情?以及它们存在时是否相同?
【问题讨论】:
标签: python-3.x pandas
您可以对常规分隔文件工作,不同之处在于默认参数,例如sep 是'\t'(制表符),用于read_table,但',' 用于read_csv。它们在下面的实现都是一样的
如果你看source
他们用不同的分隔符调用相同的函数:
read_csv = _make_parser_function('read_csv', sep=',')
read_csv = Appender(_read_csv_doc)(read_csv)
read_table = _make_parser_function('read_table', sep='\t')
read_table = Appender(_read_table_doc)(read_table)
def _make_parser_function(name, sep=','):
是接受sep arg 的通用方法
【讨论】:
唯一的区别实际上是sep 参数的默认值。
read_csv 使用 sep=',',read_table 使用 sep='\t',仅此而已。
我们可以在inspect 模块的帮助下通过将签名parameters 作为有序映射来确认这一点。
import inspect
import pandas as pd
params_csv = inspect.signature(pd.read_csv).parameters
params_table = inspect.signature(pd.read_table).parameters
参数的对称差只有两个元素,它们都对应sep参数及其两个函数的不同默认值。
>>> params_csv.items() ^ params_table.items()
{('sep', <Parameter "sep=','">), ('sep', <Parameter "sep='\t'">)}
【讨论】:
编辑:Upon discussion,决定保留read_table,所以这个函数现在是undeprecated。
如果你签出~~Pandas documentation for read_table:
Deprecated 从 0.24.0 版开始。
请改用
pandas.read_csv(),如有必要,请传递sep='\t'。
所以建议不要使用read_table()。
【讨论】: