如何格式化字典(最初来自数据帧)以供操作使用?

2024-05-19 07:23:31 发布

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

我当前的过程是使用一个循环来填充两个列表,然后将它们转换为一个数据帧,然后将其转换为一个字典,以便在更大的数据帧中使用

newdictionarydf = pd.DataFrame({'Col1': a_list, 'Col2': b_list})
mydictionary = newdictionarydf.to_dict(orient='dict')

输出为:

{'Col1': {0: 'A', 1: 'B', 2: 'C'},
 'Col2': {0: 118, 1: 120, 2: 104}}

但是,我现在尝试使用map函数在现有数据帧中构建一个新列,但在新列中接收NaN值。我已经确保我映射的列具有相同的名称(Col1),以防有所帮助,但运气不佳

bigdf['Col3'] = bigdf['Col1'].map(mydictionary)
# Output
   Col1 Col3
0  A    NaN
1  B    NaN
2  C    NaN

我想要的输出是:

# Output
   Col1 Col3
0  A    118
1  B    120
2  C    104

我相信这很可能是我犯的一个简单的错误。我还尝试将Col1设置为创建数据帧和将其转换为字典之间的索引,但这没有帮助。谢谢


2条回答

不确定为什么要先将列表转换为数据帧,然后再将数据帧转换为字典,您可以使用类似的方法来创建字典

mydictionary = dict(zip(a_list, b_list))

如果您在代码的其余部分使用它,您将得到预期的结果

使用:

mydictionary = newdictionarydf.set_index("Col1")["Col2"].to_dict()

这将产生:

{'A': 118, 'B': 120, 'C': 104}

然后:

bigdf['Col3'] = bigdf['Col1'].map(mydictionary)

创建:

  Col1  Col3
0    A   118
1    B   120
2    C   104

相关问题 更多 >

    热门问题