使用第一列作为键,第二列作为值的 DataFrame 到 Json
Posted
技术标签:
【中文标题】使用第一列作为键,第二列作为值的 DataFrame 到 Json【英文标题】:DataFrame to Json Using First Col as Key and Second as Value 【发布时间】:2018-11-20 12:13:41 【问题描述】:我有一个如下所示的数据框:
k = pd.DataFrame('A':[1,2,3,4], 'B':['a','b','c','d'])
我想插入一个如下所示的 mongoDB:
dic = 1:'a', 2:'b',3:'c',4:'d'
我该怎么做?
我已经检查过这样的事情,但它们似乎不适用于我的 df:
convert pandas dataframe to json object - pandas
提前致谢!
【问题讨论】:
我强烈建议你“不要”这样插入 MongoDB。虽然您可以存储“灵活”的数据结构,但“垃圾输入”就是“垃圾输出”。任何“数据点”都不应用作数据库中“键”的名称。如果您想要在导入后进行有意义的查询,您真的应该重新考虑如何存储它。 所以你是建议不要指定索引,让mongo创建一个?这是一个很好的建议,我也考虑过,但我需要它具有以下结构: json = key:key:value, key:value 也许我可以以更好的方式做到这一点,但是如何?是的,这种类型也可以工作,对吧? dic = :1:'a', 2:'b',3:'c',4:'d' 我所说的是 key1: value1, key2: value2
是您需要避免的问题。您不能以有效的方式“查询数据库”来匹配key1
或key2
。另一方面,[ k: "key1", v: "value1" , k: "key2", v: "value2" ]
工作得很好,因为 k
和 v
在每个元素中都是静态的。
【参考方案1】:
使用Series.to_json
并在必要时更改key
值添加rename
:
print (k.set_index('A').rename(columns='B':'index1').to_json())
"index1":"1":"a","2":"b","3":"c","4":"d"
如果需要导出到文件:
k.set_index('A').rename(columns='B':'index1').to_json('file.json')
【讨论】:
感谢耶斯瑞尔!你不是第一次帮我了!!这个解决方案怎么样? dic = 1:'a', 2:'b',3:'c',4:'d' 试试print (k.set_index('A')['B'].to_json())
这看起来很棒的伙伴,我要测试我的非假人 df 来验证!
因为是json
,如果需要dict,就用print (k.set_index('A')['B'].to_dict())
【参考方案2】:
虽然我所写的不是所提问题的答案,但我仍然在为我遇到的一个小问题提供解决方案,我在谷歌上搜索并到达了这里。
问题:如何从 panda 数据框中创建一个字典,其中一列作为键,常量值(在我的例子中为 1)作为你猜对的值。
解决方案:
f = pd.Series(data = [1]*df.shape[0],index=df['col_name'])
x = f.to_json(orient='columns')
输出:
"one":1, "two":1, "three": 1
我为什么要这样做? 因为字典中的搜索是高度优化的(是的,我也可以使用 set)
附: Python新手,请对我温柔:)。
【讨论】:
以上是关于使用第一列作为键,第二列作为值的 DataFrame 到 Json的主要内容,如果未能解决你的问题,请参考以下文章