Python Can数据帧&x2019;s单元格是否将嵌套字典作为值保存?

Python Can数据帧&x2019;s单元格是否将嵌套字典作为值保存?,python,pandas,dataframe,numpy,Python,Pandas,Dataframe,Numpy,口述: meta_data = { "attr1":"meta_value1", "attr2": { "key1": "value1", "key2": "value2",

口述

meta_data = {
                "attr1":"meta_value1", 
                "attr2": {
                             "key1": "value1",
                             "key2": "value2",
                             "key3": "value3",
                         },
             }
然后,我想通过以下操作创建一个数据帧:

df = pd.DataFrame({"df_key1": "df_value1", "df_key2": "df_value2", 
                   "df_key3": "df_value3", "meta_data": meta_data}, index[0])
我得到:

        df_key1        df_key2        df_key3        meta_data
0       df_value1      df_value2      df_value3      NaN
            df_key1        df_key2        df_key3        meta_data
attr1       df_value1      df_value2      df_value3      meta_value1
attr2       df_value1      df_value2      df_value3      {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
列“元数据”值为NaN

我也试过了

df_dict = {"df_key1": "df_value1", "df_key2": "df_value2", 
           "df_key3": "df_value3", "meta_data": meta_data}

df = pd.DataFrame.from_dict(df_dict)
我得到:

        df_key1        df_key2        df_key3        meta_data
0       df_value1      df_value2      df_value3      NaN
            df_key1        df_key2        df_key3        meta_data
attr1       df_value1      df_value2      df_value3      meta_value1
attr2       df_value1      df_value2      df_value3      {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
我真正想要的是:

        df_key1        df_key2        df_key3        meta_data
0       df_value1      df_value2      df_value3      {'attr1': 'meta_value1', 'attr2': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}}
嵌套字典作为数据帧单元格中的值

我该怎么办


所有的答案都能解决我的问题,我为自己挑了一个最合适的,谢谢大家


如果您从任何合理的角度(如代码样式或其他方面)有任何建议,欢迎评论。

使用pd.Series然后使用pd.DataFrame


df=pd.系列({“df_-key1”:“df_-value1”,“df_-key2”:“df_-value2”,
“df_键3”:“df_值3”,“元数据”:元数据})
df.to_frame().T

先使用pd.Series,然后使用pd.DataFrame


df=pd.系列({“df_-key1”:“df_-value1”,“df_-key2”:“df_-value2”,
“df_键3”:“df_值3”,“元数据”:元数据})
df.to_frame().T

在更改
数据帧
创建时,将
元数据
包装在
列表中
解决所需的输出问题-

>>> df_dict = {"df_key1": "df_value1", "df_key2": "df_value2","df_key3": "df_value3", "meta_data": [meta_data]}
>>> df = pd.DataFrame.from_dict(df_dict)
>>> df
     df_key1    df_key2    df_key3                                          meta_data
0  df_value1  df_value2  df_value3  {'attr1': 'meta_value1', 'attr2': {'key1': 'va...
>>> df.meta_data.values
array([{'attr1': 'meta_value1', 'attr2': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}}],
      dtype=object)

更改
数据帧
创建后,将
元数据
包装到
列表中
解决所需的输出问题-

>>> df_dict = {"df_key1": "df_value1", "df_key2": "df_value2","df_key3": "df_value3", "meta_data": [meta_data]}
>>> df = pd.DataFrame.from_dict(df_dict)
>>> df
     df_key1    df_key2    df_key3                                          meta_data
0  df_value1  df_value2  df_value3  {'attr1': 'meta_value1', 'attr2': {'key1': 'va...
>>> df.meta_data.values
array([{'attr1': 'meta_value1', 'attr2': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}}],
      dtype=object)

您应该尝试使用字典中的
.items()
创建具有键值对的数据帧

设置:

import pandas as pd

meta_data = {
                "attr1":"meta_value1", 
                "attr2": {
                             "key1": "value1",
                             "key2": "value2",
                             "key3": "value3",
                         },
             }


df_dict = {"df_key1": "df_value1", "df_key2": "df_value2", 
           "df_key3": "df_value3", "meta_data": meta_data}
这将提供所需的数据帧:

pd.DataFrame({k: [v] for k, v in df_dict.items()})

您应该尝试使用字典中的
.items()
创建具有键值对的数据帧

设置:

import pandas as pd

meta_data = {
                "attr1":"meta_value1", 
                "attr2": {
                             "key1": "value1",
                             "key2": "value2",
                             "key3": "value3",
                         },
             }


df_dict = {"df_key1": "df_value1", "df_key2": "df_value2", 
           "df_key3": "df_value3", "meta_data": meta_data}
这将提供所需的数据帧:

pd.DataFrame({k: [v] for k, v in df_dict.items()})