Это очень похоже на файл формата с фиксированной шириной, а не один, отформатированный с использованием разделителя.Если ваша строка pre-split находится в original
, то при использовании pd.read_fwf
со стандартным механизмом логического вывода «предположим, что столбцы» будет фактически работать на вашем примере:
import io, pandas as pd
df = pd.read_fwf(io.StringIO(original), header=None)
Но я думаю, что безопаснее - или, по крайней мере, более явно - указать, что ширина столбцов напрямую, через widths
или colspecs
.
In [55]: pd.read_fwf(io.StringIO(original), header=None, widths=[17, 100])
Out[55]:
0 1
0 Origin Time 2016/04/16 01:25:00
1 Lat. 32.753
2 Long. 130.762
3 Depth. (km) 12
4 Mag. 7.3
5 Station Code AIC001
6 Station Lat. 35.2976
7 Station Long. 136.7500
8 Station Height(m) 6
9 Record Time 2016/04/16 01:28:06
10 Sampling Freq(Hz) 100Hz
11 Duration Time(s) 120
12 Dir. N-S
13 Scale Factor 7845(gal)/8223790
14 Max. Acc. (gal) 2.327
15 Last Correction 2016/04/16 01:28:08
Конечно, еслиВаш файл неправильно отформатирован, возможно, вам не повезло, и вам придется включить некоторые обходные пути.
FWIW, в данном случае это просто прославленная версия
df = pd.DataFrame([[row[:17].strip(), row[17:].strip()] for row in original.splitlines()])
.