【发布时间】:2019-04-11 11:27:32
【问题描述】:
我有一个数据框,其中每一行都是一个字典,但是每个字典中的键各不相同。我想遍历每一行并获得一个包含所有唯一键的列表。有谁知道怎么做?
我试过这段代码
np.unique(np.array(train.totals.apply(lambda x: ast.literal_eval(x).keys())))
但这会产生 dict_keys() 的唯一组合,而不是键的唯一组合。
例如,假设我有两行。如上所述,每一行的列值都是一个字典。第 1 行的字典键是水果和蔬菜,第 2 行的字典键是水果、蔬菜和谷物。
上面的代码会产生
dict_keys(['fruit','vegetable'])
和
dict_keys(['fruit','vegetable','grain'])
但是,我希望输出只是一个包含水果、蔬菜和谷物的列表或数组(跨行看到的唯一键)。
编辑:添加的数据框截图enter image description here
edit2:下面的代码示例
import pandas as pd
import numpy as np
import ast
dummy_data = [['A',str({"pageviews":"1","hits":"1"})],['B',str({"pageviews":"1","visits":"1"})]]
dummy_df = pd.DataFrame(dummy_data,columns = ['ID','totals'])
np.unique(np.array(dummy_df.totals.apply(lambda x: ast.literal_eval(x).keys())))
【问题讨论】:
-
您能否包含一些代码来生成您的 df 或 MCVE?
-
欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。
-
“我有一个数据框,其中每一行都是字典”可能不是一个好的设计选择。由于您几乎消除了任何有效执行此操作的机会,只需遍历每一行,并将所有键添加到
set。 -
@juanpa.arrivillaga 我试图这样做,但我不知道如何获得
df的字典。我一直只是得到一个平面数据框。 :-/ -
@juanpa 数据集不是我的,由第三方提供;)
标签: python python-3.x pandas loops dictionary