【问题标题】:Txt to csv format with rows and columns [python]Txt 到 csv 格式的行和列 [python]
【发布时间】:2020-10-13 18:34:58
【问题描述】:

需要帮助将 txt 文件转换为行和列完整的 csv。文本文件在这里: (http://weather.uwyo.edu/cgi-bin/sounding?region=naconf&TYPE=TEXT%3ALIST&YEAR=2020&MONTH=06&FROM=2300&TO=2300&STNM=72265)

目前我只有这个……

df = pd.read_csv('sounding-72265-2020010100.txt',delimiter=',')
df.to_csv('sounding-72265-2020010100.csv')

但它只有一列,所有其他列都在其行内。 而是想将其格式化为这样的东西

CSV Format

感谢您的帮助

【问题讨论】:

标签: python


【解决方案1】:

我假设您可以从从网站复制的文本开始;即您通过复制/粘贴创建一个类似于以下内容的data.txt 文件:

1000.0      8                                                               
  925.0    718                                                               
  909.0    872   39.6    4.6     12   5.88     80      7  321.4  340.8  322.5
  900.0    964   37.6   11.6     21   9.62     75      8  320.2  351.3  322.1
  883.0   1139   36.6    7.6     17   7.47     65      9  321.0  345.3  322.4
...
...
...

那么下面的作品,主要基于this answer

import pandas as pd

df = pd.read_table('data.txt', header=None, sep='\n')
df = df[0].str.strip().str.split('\s+', expand=True)

您读取的数据仅由新行分隔,生成一列df。然后使用字符串方法来格式化条目并将它们扩展成一个新的DataFrame。

然后,您可以在 this answer 的帮助下添加列名:

col1 = 'PRES   HGHT   TEMP   DWPT   RELH   MIXR   DRCT   SKNT   THTA   THTE   THTV'.split()
col2 = 'hPa     m      C      C      %    g/kg    deg   knot     K      K      K '.split()

df.columns = pd.MultiIndex.from_tuples(zip(col1,col2), names = ['Variable','Unit'])

结果(df.head()):

Variable    PRES  HGHT  TEMP  DWPT  RELH  MIXR  DRCT  SKNT   THTA   THTE   THTV
Unit         hPa     m     C     C     %  g/kg   deg  knot      K      K      K
0         1000.0     8  None  None  None  None  None  None   None   None   None
1          925.0   718  None  None  None  None  None  None   None   None   None
2          909.0   872  39.6   4.6    12  5.88    80     7  321.4  340.8  322.5
3          900.0   964  37.6  11.6    21  9.62    75     8  320.2  351.3  322.1
4          883.0  1139  36.6   7.6    17  7.47    65     9  321.0  345.3  322.4

如果是我,我实际上可能会删除“Units”列名,b/c 我认为多索引列会使切片变得更加复杂。

同样,读取数据和列名都假定您可以将它们复制粘贴到文本文件/Python 中,然后解析。如果您正在阅读许多这样的页面,或者想要进行某种网络抓取,则需要额外的工作。

【讨论】:

    猜你喜欢
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多