Pandas使用mongodb存储嵌套对象

时间:2017-11-17 19:47:19

标签: python mongodb pandas

我想在mongodb中存储一个数据帧。我能够正常地做到这一点,但我需要添加另一个列,其值将作为对象存储在mongodb中

Column C:
 1.   {
    "test1": "Unknown",
    "test2": "Unknown"
    }
 2.   {
    "test1": "Unknown",
    "test2": "Unknown"
    }

我试图通过以下方式做到这一点:

df['C'] = {
    "test1": "Unknown",
    "test2": "Unknown"
    }

这给我一个错误

ValueError: Length of values does not match length of index

稍后我将使用

将其存储在mongodb中
records = json.loads(df.T.to_json()).values()

db.users.insert(records)

任何想法如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

我认为您的数据帧不是一行,因此您无法为df [' C']分配单个值。
您可以创建与数据帧长度相同的列表:

/etc/crontab

或使用apply运行一些填充列的函数:

import pandas as pd
df = pd.DataFrame(data=list(range(5)), columns=["Sample"])
df['C'] = [{"test":"value"}]* df.shape[0]
df

    Sample  C
0   0   {'test': 'value'}
1   1   {'test': 'value'}
2   2   {'test': 'value'}
3   3   {'test': 'value'}
4   4   {'test': 'value'}

使用apply的优点是能够轻松地将现有数据从数据框中删除到新列中。例如,这里测试的数字是从" Sample"字段。