【发布时间】:2019-03-31 06:13:57
【问题描述】:
我正在尝试从一些数据构建多个数据帧,这些数据的内容(根据变量,而不是值)可能会在同一数据帧内的每一行中发生变化。
我现在尝试的方法是为每个新行构建一个新的 1 行数据框,然后使用 append 方法将其附加到现有数据框。这负责创建新列并将现有行的值设置为 NaN。
我还按照建议的here 尝试了loc 方法,但这会返回一个ValueError。
除此之外,我还可以拥有一千多个可能的标签。因此,我想避免必须在开头显式声明所有列,并且如果不读取整个文件至少一次,几乎不可能知道特定文件所需的所有列。
但是,我知道,逐行构建数据框被认为是一种不好的(如果不推荐使用的话)做法。
所以,假设我的数据来自一个与此类似的文本文件:
A=10,B=2
A=20,B=3
A=30,C=Batman
我想创建一个看起来像的数据框
a b c
0 10 2.0 NaN
0 20 3.0 NaN
0 30 NaN Batman
你建议怎么做?
编辑: 数据来自一个非常混乱的固定宽度文本。文本文件的每一行都是一个连续的字符序列(无分隔符)。行内有 3 个字母标识符,标记一个部分的开始,后面跟着该部分的值。我有一个文档,我翻译成一个 python 字典,它告诉我每个标识符在该部分开始之后我需要读取多少个字符以及它们是如何划分的。
例如。一行可能是
AAA1234BBB789aa78CCC123456
然后我会知道AAA 部分跟随 3 个值,一个由 2 位整数组成,两个由一位整数组成。该部分BBB 后跟一个 3 位整数、一个 2 字符字符串和 2 个一位整数。
我有一段代码可以把它翻译成一个看起来像这样的字典
{'AAA_1': 12, 'AAA_2':3, 'AAA_3':4, 'BBB_1':789, 'BBB_2':aa,'BBB_3':7, 'BBB_4':8, ......}
EDIT2:如果你想看看原始文件,你可以看这里(其中任何一个都可以):
ftp://ftp.ncdc.noaa.gov/pub/data/noaa/2017/
要了解如何阅读,请看这里(不想问你这么多):
ftp://ftp.ncdc.noaa.gov/pub/data/noaa/ish-format-document.pdf
【问题讨论】: