使用pandas.read_csv分隔列
问题描述:
我想从一个较大的.txt
文件读取一个表格到python。使用pandas.read_csv分隔列
数据的提取物是:
2 Network magnitudes:
MLv 2.05 +/- 1.34 7
M 2.05 7 preferred
7 Phase arrivals:
sta net dist azi phase time res wt sta
BMOR EC 0.0 226 P 00:22:31.385 -0.6 M 1.0 BMOR
BREF EC 0.0 347 P 00:22:31.543 -0.5 M 1.0 BREF
BTAM EC 0.0 58 P 00:22:31.796 -0.3 M 1.0 BTAM
BVC2 EC 0.0 26 P 00:22:33.061 0.8 M 1.0 BVC2
BNAS EC 0.1 294 P 00:22:32.871 -0.1 M 1.0 BNAS
SUCR EC 0.1 314 P 00:22:34.610 0.6 M 1.0 SUCR
BRRN EC 0.1 207 P 00:22:34.768 0.4 M 1.0 BRRN
7 Station magnitudes:
sta net dist azi type value res amp per
BMOR EC 0.0 226 MLv 1.48 -0.57 1.20076
我只想相抵港表等np.loadtext
和np.genfromtxt
都功亏一篑因各种原因(不能处理数字和字符串/包含bug除非您仅指定一个空格(”“)分隔符,我不能在这里做)
我一直在试图与pandas.read_csv
温控功能,但它不能识别符
a = pd.read_csv(datafileloc, sep='\+s', skiprows=5, skipfooter=3)
生产:
a
Out[90]:
sta net dist azi phase time res wt sta
0 BMOR EC 0.0 226 P 00:22:31.385 -0....
1 BREF EC 0.0 347 P 00:22:31.543 -0....
2 BTAM EC 0.0 58 P 00:22:31.796 -0....
3 BVC2 EC 0.0 26 P 00:22:33.061 0....
4 BNAS EC 0.1 294 P 00:22:32.871 -0....
5 SUCR EC 0.1 314 P 00:22:34.610 0....
6 BRRN EC 0.1 207 P 00:22:34.768 0....
这看起来不错除了他们是每一个字符串,它没有重视的空白分隔符:
a.values
Out[89]:
array([['BMOR EC 0.0 226 P 00:22:31.385 -0.6 M 1.0 BMOR'],
['BREF EC 0.0 347 P 00:22:31.543 -0.5 M 1.0 BREF'],
['BTAM EC 0.0 58 P 00:22:31.796 -0.3 M 1.0 BTAM'],
['BVC2 EC 0.0 26 P 00:22:33.061 0.8 M 1.0 BVC2'],
['BNAS EC 0.1 294 P 00:22:32.871 -0.1 M 1.0 BNAS'],
['SUCR EC 0.1 314 P 00:22:34.610 0.6 M 1.0 SUCR'],
['BRRN EC 0.1 207 P 00:22:34.768 0.4 M 1.0 BRRN']], dtype=object)
线可与分离list(a.values[0])[0].split()
但是这将需要重新组织来获得单个列。我想有pandas.read_csv
只是承认他们是分开的,所以我可以提取单个列(合理有效将是重要的,一旦我扩大规模)
我在哪里出错了?
答
+1
为了记录,这已被固定在[c9ffd78](https://github.com/pydata/pandas/commit/c9ffd7891dadd6e5590695e142f77a3476b5c4e3)中。 – DSM
我不确定是否要将其作为错字(您需要'\ s +',而不是'\ + s')或作为[this]的副本来关闭它(http://stackoverflow.com/questions/15026698 /如何对化妆分离式阅读-CSV-更灵活-WRT空白)。 – DSM
嘿@DSM - 谢谢!我刚刚测试过,你是对的,这是一个错字。不过,我直接从文档中直接得知,错字来自于:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html(在delim_whitespace参数下) – mjp
你是对的!我会确保得到修复。 :-) – DSM