Я пытаюсь прочитать одну таблицу из более крупного файла .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
fucntion но не распознает разделители
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
просто признали, что они разделены, поэтому я могу извлечь отдельные столбцы (разумно эффективный будет иметь важное значение, если я его увеличиваю)
Где я иду не так?
Я не уверен, следует ли закрыть это как опечатку (вам нужно '\ 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