Python 如何将对象窗体数组更改为普通数组

Python 如何将对象窗体数组更改为普通数组,python,pandas,numpy,Python,Pandas,Numpy,这是一个.txt数据文件,其中前两行是一些标题: REC OBS REPORT TIME STATION LATI- LONGI- ELEV STN PR STN DSLP ALTIM AIR.T DEWPT R.HUM WIND WIND HOR 3H PR 24H PR |

这是一个
.txt
数据文件,其中前两行是一些标题:

   REC      OBS       REPORT TIME   STATION   LATI-   LONGI-   ELEV   STN PR  STN DSLP  ALTIM     AIR.T    DEWPT    R.HUM    WIND     WIND      HOR     3H PR   24H PR    |                                                                                                                                      
   TYPE     TYPE      YYYYMMDDHHMM  BBSSS     TUDE     TUDE     (M)   (HP=MB)  (HP=MB)  (HP=MB)     (C)      (C)     (%)     DIR    SPD(M/S)   VIS(M)  (KG/M2)  (KG/M2)   |        PRES        PMSL        TMDB        ALSE        TMDP        REHU        WDIR        WSPD        TP03        TP24        HOVI  
   ADPSFC   SYNOP     201209191754  72533     41.00   -85.20    252    990.3   1020.1  -9999.9     18.3      2.2  -9999.9    240.0      4.1  16000.0  -9999.9  -9999.9    |    99030.00   102010.00      291.45    -9999.90      275.35    -9999.90      240.00        4.10    -9999.90    -9999.90    16000.00
   ADPSFC   SYNOP     201209191754  72438     39.73   -86.27    246    991.7   1020.5  -9999.9     18.3      3.3  -9999.9    200.0      3.6  16000.0  -9999.9  -9999.9    |    99170.00   102050.00      291.45    -9999.90      276.45    -9999.90      200.00        3.60    -9999.90    -9999.90    16000.00
   ADPSFC   SYNOP     201209191756  72423     38.18   -85.73    149   1004.1   1021.5  -9999.9     19.4      1.1  -9999.9      0.0      0.0  16000.0  -9999.9  -9999.9    |   100410.00   102150.00      292.55    -9999.90      274.25    -9999.90        0.00        0.00    -9999.90    -9999.90    16000.00
   ADPSFC   SYNOP     201209192054  72533     41.00   -85.20    252    988.4   1017.9  -9999.9     19.4      2.8  -9999.9    200.0      6.2  16000.0      0.0  -9999.9    |    98840.00   101790.00      292.55    -9999.90      275.95    -9999.90      200.00        6.20        0.00    -9999.90    16000.00
   ADPSFC   SYNOP     201209192056  72423     38.18   -85.73    149   1001.8   1019.2  -9999.9     21.7      0.6  -9999.9      0.0      0.0  16000.0      0.0  -9999.9    |   100180.00   101920.00      294.85    -9999.90      273.75    -9999.90        0.00        0.00        0.00    -9999.90    16000.00
实际上,它可以下载。
我使用
pd.read\u table()

但是,在数组中,它是一个
字符串

应用
splitlines()
,我们可以得到以下结果:

str(obs.values[1]).splitlines()
Out[5]: ["[ '   ADPSFC   SYNOP     201208312354  72533     41.00   -85.20    252    988.4   1017.6  -9999.9     27.2     22.8  -9999.9    200.0      2.1  16000.0  -9999.9  -9999.9    |    98840.00   101760.00      300.35    -9999.90      295.95    -9999.90      200.00        2.10    -9999.90    -9999.90    16000.00']"]
但我仍然很难使用这些数据(用于分析或绘图)。
我期望的结果应该是一个数组,它可以被索引或切片

[ADPSFC  SYNOP  201209192056 72423  38.18 -85.73  149  1001.8 1019.2  -9999.9  21.7 0.6 -9999.9  0.0 0.0 16000.0  0.0  -9999.9 100180.00  101920.00  294.85 -9999.90   273.75  -9999.90  0.00 0.00  0.00  -9999.90 16000.00]

感谢您的帮助。

也许您应该打电话给delim_whitespace=True手动重写您的

obs = pd.read_table('sample.tex', header=1,delim_whitespace=True).drop('|',axis=1)
obs.columns = ['REC_TYPE','OBS_TYPE','REPORT_TIME','STATION_BBSSS','LATITUDE','LONGITUDE','ELEV','STN_PR',
              'STN_DSLP','ALTIM','AIR_T','DEWPT','R_HUM','WIND_DIR','WIND_SPD','HOR_VIS','3H_PR','24H_PR',
              'PRES','PMSL','TMDB','ALSE','TMDP','REHU','WDIR','WSPD','TP03','TP24','HOVI']

print(obs.head())
  REC_TYPE OBS_TYPE   REPORT_TIME  STATION_BBSSS  LATITUDE  LONGITUDE  ELEV  \
0   ADPSFC    SYNOP  201209191754          72533     41.00     -85.20   252   
1   ADPSFC    SYNOP  201209191754          72438     39.73     -86.27   246   
2   ADPSFC    SYNOP  201209191756          72423     38.18     -85.73   149   
3   ADPSFC    SYNOP  201209192054          72533     41.00     -85.20   252   
4   ADPSFC    SYNOP  201209192056          72423     38.18     -85.73   149
你注意到:

  • 我只得到第二个标题行(
    header=1
  • 我删除了不包含任何有趣内容的列(
    drop(“|”,axis=1)
然后,您的
.tex
数据将存储到一个易于分析和绘图的
数据框中。
有关使用熊猫的更多详细信息,请参阅


注意您可以将
obs.REPORT\u TIME
转换为
datetime

obs.REPORT_TIME = pd.to_datetime(obs.REPORT_TIME,format='%Y%m%d%H%M')
obs.REPORT_TIME = pd.to_datetime(obs.REPORT_TIME,format='%Y%m%d%H%M')