pandas 如何使用panda/python循环遍历列表中的字典?

m528fe3b  于 2023-02-27  发布在  Python
关注(0)|答案(1)|浏览(155)

我正在尝试循环通过一个json请求。我使用tags = df1.apply(lambda row:row[“tags”],axis= 1),结果集的示例如下图所示。x1c 0d1x
现在我想循环遍历列表和嵌套字典,并获取group的值和values(字典中的键)作为独立字段。
另外,我希望把它们推到bigquery中。所以我需要它们作为单独的字符串,而不是列表/字典。你能通过任何panda函数或python方法来帮助我解决这个问题吗?
谢谢
我尝试了df.apply来扁平化JSON请求的列表。尝试了df.explode方法来破坏Pandas字典
已尝试df.to_string。它可以工作,但bigquery不接受列出的函数作为表中的输入。

icnyk63a

icnyk63a1#

str访问器使用串行切片:

df1['tags'].str[0].str['group']

第一个切片(df1['tags'].str[0])提供字典,第二个切片(.str['group'])访问密钥。
示例:

df1 = pd.DataFrame({'tags': [[],
                             [{'group': 'generic', 'value': 'xxx'}],
                             [{'nogroup': 'xxx'}]]
                   })
df1['group'] = df1['tags'].str[0].str['group']

输出:

tags    group
0                                      []      NaN
1  [{'group': 'generic', 'value': 'xxx'}]  generic
2                    [{'nogroup': 'xxx'}]     None

你可以对列表解析做同样的事情,但是你必须手工处理缺失的值:

df1['group'] = [l[0].get('group', None)
                if len(l)>0 and isinstance(l[0], dict)
                else pd.NA
                for l in df1['tags']]

相关问题