Eri*_*sen 5 python file dataframe pandas
我开始阅读Nunez-Iglesias 等人写的《Elegant SciPy》。al,当打开书中的第一个数据集(文件.txt)时,作者使用
filename = 'data/counts.txt'
with open(filename, 'rt') as f:
data_table = pd.read_csv(f, index_col=0) # Parse file with pandas
Run Code Online (Sandbox Code Playgroud)
但我认为这read_csv会关闭文件,因为它是在给定文件描述符的情况下打开的(请参阅Andy Hayden 的回答此处)。
那么这里的上下文管理器有什么目的吗,或者我们可以安全地编写
filename = 'data/counts.txt'
data_table = pd.read_csv(filename, index_col=0)
Run Code Online (Sandbox Code Playgroud)
您可以传递文件句柄read_csv或传入文件名。在第一种情况下,您创建文件句柄,因此您有责任再次关闭它。但是,如果您传入文件名,那么read_csv将代表您打开该文件并再次关闭它(在适当的时候)。
因此,在大多数情况下,仅提供文件名是更简单的选择:
data_table = pd.read_csv(filename, index_col=0)
Run Code Online (Sandbox Code Playgroud)
请注意,传递文件句柄的选项允许您传递类似文件的对象:
>>> from io import StringIO
>>> import pandas as pd
>>> myio = StringIO("""a b c
... 0 1 2 3
... 1 4 5 6""")
>>> pd.read_csv(myio, sep=' ', header=0, index_col=0)
a b c
0 1 2 3
1 4 5 6
Run Code Online (Sandbox Code Playgroud)
然而,真正将真实的文件句柄传递给read_csv. 我能想到的唯一情况是 pandas 无法打开文件本身。例如,如果使用不常见的压缩算法对其进行压缩。
| 归档时间: |
|
| 查看次数: |
3423 次 |
| 最近记录: |