我正在尝试将具有两列的数据帧转换为字典,第一列为键,第二列的值全部存储在一个字典中。
数据样本:
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:“等等……”
我在做什么错?我也想遍历每个键值对,从中构建一个字符串。这是正确的方法吗?
答案 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)
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}