解析JSON字符串列

2024-09-28 05:19:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个tab分隔的flatfile,其中一列是JSON数据存储为字符串,例如

Col1        Col2                    Col3
1491109818  2017-08-02 00:00:09.250 {"type":"Tipper"}
1491110071  2017-08-02 00:00:19.283 {"type":"HGV"}
1491110798  2017-08-02 00:00:39.283 {"type":"Tipper"}
1491110798  2017-08-02 00:00:39.283 \N
...

我要做的是将表作为pandas dataframe加载,对于col3,将数据更改为字符串,只包含type键中的信息。如果没有JSON或没有类型键的JSON,我想返回None。在

例如

^{pr2}$

我能想到的唯一方法是使用iterrows,但是在处理大文件时,这是非常慢的。在

for index, row in df.iterrows():
    try:
        df.loc[index, 'Col3'] = json.loads(row['Col3'])['type']
    except:
        df.loc[index, 'Col3'] = None

有什么关于更快的方法的建议吗?在


Tags: 数据方法字符串nonejsondfindextype
1条回答
网友
1楼 · 发布于 2024-09-28 05:19:19

使用np.vectorizejson.loads

import json

def foo(x):
    try:
        return json.loads(x)['type']
    except (ValueError, KeyError):
        return None

v = np.vectorize(foo)
df.Col3 = v(df.Col3)

请注意,决不建议使用裸except,因为您可能会无意中捕获和删除您无意中发现的错误。在


^{pr2}$

相关问题 更多 >

    热门问题