gpt4 book ai didi

python - 以元组为键将字典转换为数据框

转载 作者:行者123 更新时间:2023-11-28 22:40:18 26 4
gpt4 key购买 nike

我有这样的字典

df_dict = {(7, 'hello'): {1}, (1, 'fox'): {2}}

我想将其转换为数据框,其中元组的第一部分是行标题,元组的第二部分是列标题。我试过这个:

doc_df = pd.DataFrame(df_dict, index=[df_dict.keys()[0]], columns = [df_dict.keys()[1]])

但是我得到了错误TypeError: 'dict_keys' object does not support indexing

我希望我的数据框看起来像:

_ | fox  | hello  
1 | 2 | null
7 | null | 1

如何索引键?

最佳答案

你得到 TypeError 的原因是 df_dict.keys() 是一个迭代器,它通过一。它产生的元素将是 (7, 'hello')(1, 'fox'),但它不会提前“知道”。迭代器本身不知道它有多少元素或这些元素可能具有什么样的结构,特别是它没有任何方法可以通过索引号访问元素。

现在,您可以使用 itertools.islice 函数从 iterable 访问给定编号的元素,但它涉及丢弃之前出现的所有内容。所以这不是你想要的。

的问题的答案是如何索引键,首先是将它们转换成列表:

l = list(df_dict.keys())

然后你可以使用l[0]l[1]等等。

但即使那样也不是您的应用程序实际需要的。在您的示例中,结果列表将是

[(7, 'hello'), (1, 'fox')]

因此 l[0] 将是 (7, 'hello')l[1] 将是 (1 , 'fox') (或反之亦然,因为您不知道 key 的输出顺序)。您实际想要访问的是 (7, 1)('hello', 'fox'),为此您需要使用类似列表推导的内容:

[x[0] for x in l] # (7, 1)
[x[1] for x in l] # ('hello', 'fox')

或者您可以将其转换为 NumPy 数组并进行转置。

npl = numpy.array(l) # array([[7, 'hello'], [1, 'fox']])
nplT = npl.T # array([[7, 1], ['hello', 'fox']])

现在您可以使用 nplT[0] 等等。

关于python - 以元组为键将字典转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com