将字典维数减少到1

2024-03-29 15:17:24 发布

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

我有几本字典想合并成pd.DataFrame。为了做到这一点,所有字典的维数都必须为1。如何将下列词典的维数减为1,使其保持为词典?在字典项有多个条目的情况下,应该简单地将其连接起来。所以myFunds应该变成'2.0 0.0'

h = {
    'gameStage': 'PreFlop',
    'losses': 0,
    'myFunds': [2.0, '0.0'],
    'myLastBet': 0,
    'peviousRoundCards': ['2S', 'QS'],
    'previousCards': ['2S', 'QS'],
    'previousPot': 0.03,
    'wins': 0
}

更确切地说,我的问题是:我想将对象的所有属性保存在DataFrame中。为此,我做了vars(Object),这给了我一个字典,但不是所有的条目都有相同的维度,所以我不能做DataFrame(vars(Object)),因为我得到了一个错误。这就是为什么我需要首先将vars(Object)转换成一维字典。但它需要保持一个字典,否则我无法将它转换成DataFrame。你知道吗


Tags: 目的dataframe字典object情况vars词典pd
1条回答
网友
1楼 · 发布于 2024-03-29 15:17:24

您可以迭代字典中的项,并使用^{}将它们展平。你知道吗

我们基本上告诉它遍历dictionary值中的每个键/值对,将其转换为字符串(因为不能将intstring连接起来),然后将其放回sictionary

函数funcfrom here,它的作用是确保我们总是有一个iterable项

from collections import Iterable

def func(x):
    #use str instead of basestring if Python3
    if isinstance(x, Iterable) and not isinstance(x, basestring):
        return x
    return [x]

for key, val in h.items():
    h[key] = " ".join([str(ele) for ele in func(val)])

h的输出变成:

{
  'gameStage': 'PreFlop', 
  'losses': '0', 
  'myFunds': '2.0 0.0', 
  'myLastBet': '0',
  'peviousRoundCards': '2S QS', 
  'previousCards': '2S QS',
  'previousPot': '0.03',
  'wins': '0'
}

相关问题 更多 >