python - Txt 到 csv 格式的行和列 [python]
问题描述
需要帮助将 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')
但它只有一列,所有其他列都在其行内。而是想将其格式化为这样的
谢谢你的帮助
解决方案
我假设您可以从从网站复制的文本开始;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
...
...
...
然后以下工作,主要基于这个答案:
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。
然后,您可以在此答案的帮助下添加列名:
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
实际上,如果是我,我可能会删除“单位”列名,b/c 我认为多索引列会使切片变得更加复杂。
同样,读取数据和列名都假定您可以将它们复制粘贴到文本文件/Python 中,然后解析。如果您正在阅读许多这样的页面,或者想要进行某种网页抓取,那将需要额外的工作。
推荐阅读
- c# - Powershell 脚本未通过 Asp.net 网页执行
- python - 用 python 3 编写具有入口功能的字典
- dependencies - gdb 8.1-4 在 debian 上与 libbabeltrace-ctf 中断
- f# - F# 中的 SKI 组合微积分或星舰运算符
- scala - Scala 到 Pyspark
- adobe - 需要有关如何使用 JavaScript 访问 INDD 文件的更多信息
- javascript - 防止自定义jQuery图像轮播中的事件重叠
- angular - 使用 EventEmiiter 和动态组件 angular 6 将值从子级传递给父级
- react-native - 堆栈导航器的问题
- java - proguard 注意:库类的重复定义 [javax.annotation.PostConstruct]