0

我正在阅读一个用于计算 MetPy 中的 skewT 例程的 txt 文件,但是我的负数没有被读取。

根据教程我尝试读取一个txt文件,我稍微修改了原来的命令

col_names = ['pressure', 'height', 'temperature', 'dewpoint', 'direction', 'speed']
pd.read_fwf('addbna.txt', usecols=[0, 1, 2, 3, 6, 7], names=col_names)

第一行是红色没有问题,当有负数时我开始的问题,减号完全被忽略。

这些是我正在使用的文件

https://drive.google.com/open?id=1FOGDNk9fkUooTT2NJCQgpe_12l3sprSl https://drive.google.com/open?id=1aVKeokDOW01Ol8l0UubhTSjqjN6gTCCC

4

2 回答 2

1

pd.read_fwf()函数具有关键字 option infer_nrows,它允许您指示pd.read进一步向下查看 DataFrame 以推断列宽应该有多宽。我必须将我的默认值 100 更改为 1000 才能找到第一个负值实例(以 1 秒分辨率记录)。

我最后的阅读指令变成了:

df = pd.read_fwf('some_sounding_data.txt', header=0, skiprows=(1,2), infer_nrows=1000)
于 2021-03-12T06:15:30.333 回答
0

这里有点晚了,但我遇到了完全相同的问题。

我怀疑这与温度列不是固定宽度有关。我的数据集以 28.4、27.6 等(宽度为 4)等数字开头,但一旦它最终低于 -10.0(宽度为 5),减号就不会包含在数据框温度列中。

我通过直接编辑文本文件并在第一个温度数据前面添加“0”以将其填充为 5 的宽度(28.4 变为“028.4”),找到了一种解决方法。我认为如果这是 read_fwf() 读取的第一行,它假定该列的其余部分是宽度 5,并且不会忽略减号。

希望外面的聪明人找到了更好的解决方案。我从 csv 文件中绘制 skewT 没有问题,所以如果你能以某种方式转换你的文件,这可能是解决问题的另一种方法。

于 2019-05-10T08:24:09.530 回答