【发布时间】:2021-07-14 20:25:37
【问题描述】:
构建数据:
data = pd.DataFrame({'ebe5eb3c': [1, 3, 4, -1, 1],
'd9cd9ja6': [1, 1, 0, 1, 0],
'32aq-c79': [1, 2, 1, 1, 2],
'e2c-8b7e': [1, 4, 2, 2, 1]})
mydict = dict()
mydict = ([['ebe5eb3c',[{'value': '1', 'response': 'None'}, {'value': '2', 'response': 'Several days'}, {'value': '4', 'response': 'Nearly every day'},{'value': '-7', 'response': 'Every day'},{'value': '-1', 'response': 'Do not know'}]],
['d9cd9ja6',[{'value': '1', 'response': 'Yes'}, {'value': '0', 'response': 'No', 'please go to question': '7'}]],
['z2aq-c79',[{'value': '1', 'response': 'True'},{'value': '2', 'response': 'False'}]],
['e2c-8b7e',[{'value': '1', 'response': '5-10 years'}, {'value': '2', 'response': '10-15 years'},{'value': '3', 'response': '15-20 years'},{'value': '4', 'response': '20-25 years'}]]])
我有一个包含多列的数据框,并且行对应于每个主题的答案。我需要将数据框中的原始数值重新映射到字典(mydict)中显示的实际标签。该字典以列名作为键的问题标识符嵌套,值级别包括多个不同的项。
这只是一个示例数据集 - 我需要这样做的原因是有数百个这样的列..
我尝试遍历列并应用 .map 和 .replace 但没有运气。
非常欢迎任何建议。谢谢!
【问题讨论】:
-
在您的示例中,
mydict的类型为list。这是正确的吗? -
嗨安德烈 - 好点。实际上没有,我从模板数据库创建了一个字典,类似于以下
mydict2 = columns=dict(zip(df['question'], col2["response"]))- 但出于隐私原因,我没有在此处包含确切的字典。可以在这里使用列表作为代理吗?如果你dict(mydict)那应该排序? -
哦.. 我们可以跳过创建 mydict2 的步骤,只映射两个数据帧吗?您可以发布原始 df 以及您预期的输出 df 吗?
-
嗨@ScottBoston - 我不会发布原始数据框,因为它很大。 mydict 中的问答信息来自一个非常非常深的嵌套 json,它将其答案信息存储为一个嵌套的 dict - 所以在我的数据框中,每个问题的所有信息都存储为一个单元格中的列表(我知道它是一个有点乱……但这是我得到的数据,对那里的其余数据有意义……)所以映射数据帧不起作用。我想做的是例如用标签'none'替换问题ebe5eb3c answer 1。这有意义吗?
标签: pandas dictionary nested