Python Pandas:当我通过dict(line.strip().split(None,1)从JSON格式的文本中获取数据时,为什么我的dict中缺少一些数据?

chhkpiq4  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(78)

我需要从JSON格式的文件中获取数据(属性名和值)。我可以从文件中获取所需的字符串列表。即,这总是有效的:

f = open("f.txt", "r")
data = json.load(f);
f.close()
get = data["payload"]["blob"]["rawLines"]

字符串
所以当我打印"get"时,我会看到这样的东西(如下所示),其中包含了我需要的所有值和属性名称:

get ['        name   property1                  ', '            98.00000        property2                             ', '             3.00000        property3                     ', '           500.66300        property4                                                                        ', '         -50000.9999        property5                                      ', '           100.45200        property6                                    ', '            59.75258        property7                                         ', '             9.66543        property8                                         ', '             0.00000        property9         ', '           100.07655        property10                                       ', '             0.00000        property11                           ', '             0.00000        property12                                            ', '             0.00000        property13                    ', '             0.00000        property14                    ', '             8.88888        property15                                           ', '             1.00000        property16                                               ', '             0.00000        property17 ...


然而,当我通过一个条和分裂做一个dict时:

mydict = dict(line.strip().split(None, 1) for line in get)


缺少某些属性名称-值对。例如,始终缺少property16及其值。
我不能发布数据,但我希望有人可能知道一个更强大的方法来处理带和分裂步骤。今天我一直在看以前的职位(如this之一),但还没有得到很远。
@Tim Roberts的解决方案解决了根本问题。通过使用

mydict = dict(reversed(line.split(None, 1)) for line in get)


我得到了以前缺少的所有属性名称-值对。
有一个小问题。逗号仍然存在。所以当我把dict变成一个括号时,

mydataframe = pd.DataFrame(mydict.items(), columns=["name", "value"])


我得到

name            value
0                            Methane                    CH4
1   Thing2word1 Thing2word2                        ...         25.07700
2   Thing3word3 Thing3word3                 ...          11.33000
...


有没有办法去掉逗号,这样就只有两列,属性名和值?谢谢。

y3bcpkx1

y3bcpkx11#

如果你做了默认的拆分,你不需要“strip”。我怀疑你想要的是反转键和值,像这样:

mydict = dict(reversed(line.split()) for line in get)

字符串
输出量:

{'property1': 'name', 'property2': '98.00000', 'property3': '3.00000', 'property4': '500.66300', 'property5': '-50000.9999', 'property6': '100.45200', 'property7': '59.75258', 'property8': '9.66543', 'property9': '0.00000', 'property10': '100.07655', 'property11': '0.00000', 'property12': '0.00000', 'property13': '0.00000', 'property14': '0.00000', 'property15': '8.88888', 'property16': '1.00000', 'property17': '0.00000'}

相关问题