【问题标题】:DataFrame to Json Using First Col as Key and Second as Value使用第一列作为键,第二列作为值的 DataFrame 到 Json
【发布时间】: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 } 是您需要避免的问题。您不能以有效的方式“查询数据库”来匹配key1key2。另一方面,[{ k: "key1", v: "value1" },{ k: "key2", v: "value2" }] 工作得很好,因为 kv 在每个元素中都是静态的。

标签: python json mongodb pandas dataframe


【解决方案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新手,请对我温柔:)​​。

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2021-11-22
    • 2014-09-05
    相关资源
    最近更新 更多