只想读取其中的 5 列:1,3,4,5,6
在 jupyter notebook 中执行以下代码
%matplotlib inline
import matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dtype1 ={'names':('R','c','sigma_r','sigma_t','sigma_h'),'formats':(np.float64, np.float64, np.float64, np.float64, np.float64)}
name2 = {'R','c','sigma_r','sigma_t','sigma_h'}
dtype2 = {'R': np.float64,'c': np.float64,'sigma_r': np.float64,'sigma_t': np.float64,'sigma_h': np.float64}
a = np.loadtxt('./TS015.dat', dtype=dtype1, usecols=(0,2,3,4,5))
data = pd.read_csv("./TS015.dat",skiprows=2,header=0, sep='\s+', index_col=None, names=name2, dtype=dtype2, usecols=[0,2,3,4,5])
结果发现数组 a 的结果是对的,而 data 里读取的各列的标题是乱的,并不是我想要的‘ R ’对应于第一列,‘ c ’对应于第二列。不知道是不是 read_csv 函数有什么参数没有设置对?
使用的环境是 Ubuntu 下通过 pyenv 安装的 anaconda3-4.3.1,notebook 信息: Server Information:
You are using Jupyter notebook.
The version of the notebook server is: 5.4.1-bcc8ab2 The server is running on this version of Python:
Python 3.6.4 | packaged by conda-forge | (default, Dec 23 2017, 16:31:06)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)]
Current Kernel Information:
Python 3.6.4 | packaged by conda-forge | (default, Dec 23 2017, 16:31:06)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
我另外在 ubuntu17.10 的虚拟机里尝试了同样的代码,read_csv 读取到的结果也不对,names 和列似乎是随意匹配的一样。。。
请各位指正,先谢过。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.