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()})