read_fwf不读取负数

时间:2019-01-08 15:50:35

标签: pandas negative-number metpy

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

根据我试图阅读txt文件的教程,我对原始命令做了一些修改

Managed multiply took 00:00:00.0848208 milliseconds

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

这些是我正在使用的文件

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

2 个答案:

答案 0 :(得分:1)

pd.read_fwf() 函数具有关键字选项 infer_nrows,它允许您指示 pd.read 进一步向下查看您的 DataFrame 以推断列宽应该有多宽。我不得不将我的从默认值 100 更改为 1000,以使其在我们的探测(以 1 秒分辨率记录)中找到温度中的第一个负值实例。

我的最终读入指令变成了:

df = pd.read_fwf('some_sounding_data.txt', header=0, skiprows=(1,2), infer_nrows=1000)

答案 1 :(得分:0)

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

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

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

希望那里有个聪明的人找到了更好的解决方案。我从csv文件绘制skewT时没有问题,因此,如果您可以某种方式转换文件,这可能是解决问题的另一种方法。