键在字典python中显示为nan

时间:2019-07-18 17:35:45

标签: python pandas dictionary

我正在尝试将具有两列的数据帧转换为字典,第一列为键,第二列的值全部存储在一个字典中。

数据样本:

id           summary
135791059    blha blah blah
135791051    blah something blah

这是我尝试过的代码

map_of_values = pd.Series(f_dataframe.summary.values,index=f_dataframe.id).to_dict()

print(map_of_values)

输出为:

  

{'id':{'blah blah blah':nan,'blah something blah}

我希望它是:

  

{135791059:“等等等等”,135791051:“等等……”

我在做什么错?我也想遍历每个键值对,从中构建一个字符串。这是正确的方法吗?

4 个答案:

答案 0 :(得分:0)

您可以简单地使用以下代码:

df.set_index('id').to_dict()['summary']

答案 1 :(得分:0)

尝试如下解决方案。

工作正常。无法重现该错误。也许您想检查一下创建的数据框。

f_dataframe= {'id':[135791059,135791051],
        'summary':["blha blah blah", "blah something blah"]}
df = pd.DataFrame(f_dataframe)

map_of_values = df.set_index('id').to_dict()['summary']
print(map_of_values)

答案 2 :(得分:0)

  • df.to_dict()方法用于根据orient参数将数据帧转换为序列或类似数据类型的列表的字典。
  • orient-字符串值('dict', 'list', 'series', 'split', 'records', 'index')定义了将Columns(系列转换为)的dtype。

例如。

import pandas as pd

my_dict = {'id':[135791059,135791051],'summary':["blha blah blah", "blah something blah"]}
df = pd.DataFrame(my_dict)
print(df)
records = df.to_dict('records')
data = {i['id'] :i['summary'] for i in records}
print(data)

O / P:

          id              summary
0  135791059       blha blah blah
1  135791051  blah something blah

{135791059: 'blha blah blah', 135791051: 'blah something blah'}

答案 3 :(得分:0)

如果您已经将值用作列,则通常会发生此问题。如果您已有一个列,并且想将某些“键”归因于值并创建一个新列,则它将显示为NaN。您需要将现有列用作“键”,而将所需的新列用作“值”(只需在字典中切换键和值的位置)即可。

例如:您现有的专栏是摘要,而您当前的字典是:

d = {135791059: 'blah blah blah', 135791051: 'blah something blah'}

但是,您需要像这样纠正它:

d = {'blah blah blah': 135791059: , 'blah something blah': 135791051}