我有一个数据框,长这样:
k = pd.DataFrame({'A':[1,2,3,4], 'B':['a','b','c','d']})
我想要插入一个类似这样的 mongoDB:
dic = {1:'a', 2:'b',3:'c',4:'d'}
我该怎么做呢?
我已经检查了一些类似的东西,但它们似乎在我的df上不起作用:
提前致谢!
使用 Series.to_json
方法,如果需要更改键值,请添加 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')
print(k.set_index('A')['B'].to_json())
- jezraeljson
格式,如果需要字典,请使用 print(k.set_index('A')['B'].to_dict())
。 - jezrael虽然我写的内容并不是回答所提出问题的答案,但我仍然提供了解决我遇到的一个小问题的方案,这个问题我在谷歌上搜索并找到了这里。
问题:如何从带有列作为键和常量值(在我的情况下为1)作为值的panda数据框架创建字典。
解决方案:
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)
P.S. 我是Python的新手,请对我温柔点 :)
{ key1: value1, key2: value2 }
就是你需要避免的问题。你不能以高效的方式“查询数据库”来匹配key1
或key2
。另一方面,[{ k: "key1", v: "value1" },{ k: "key2", v: "value2" }]
完全可以工作,因为每个元素中的k
和v
是静态的。 - Neil Lunn