Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python字典创建数据帧。Python dictionary有多个键,其值同时具有字符串和列表数据类型_Python_Pandas_Dataframe_Dictionary - Fatal编程技术网

从python字典创建数据帧。Python dictionary有多个键,其值同时具有字符串和列表数据类型

从python字典创建数据帧。Python dictionary有多个键,其值同时具有字符串和列表数据类型,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有一个程序,在每次迭代中生成多个字典,它遵循这种格式 # dict1 {"key1": "abc", "key2": True, "key3": []} # dict2 {"key1": "def", "key2": False, "key3": ["a", "b", "c"]} ... 我想把这些添加到熊猫数据框中 在第一次迭代中,我创建了一个df mydf = pd.DataFrame(data=dict1, columns=dict1.keys(), index=["abc"]) 在

我有一个程序,在每次迭代中生成多个字典,它遵循这种格式

# dict1
{"key1": "abc", "key2": True, "key3": []}
# dict2
{"key1": "def", "key2": False, "key3": ["a", "b", "c"]}
...
我想把这些添加到熊猫数据框中

在第一次迭代中,我创建了一个df

mydf = pd.DataFrame(data=dict1, columns=dict1.keys(), index=["abc"])
在我附加到mdf的后续迭代中

tdf = pd.DataFrame(dict2, columns=dict2.keys(), index=["def"])
mydf = mydf.append(tdf)
当我的字典中没有列表值时,这种方法有效。如果有列表值(如键3),我会得到以下值错误

ValueError: could not broadcast input array from shape (3) into shape (1)
预期产量

    key1 key2 key3
abc  "abc"  True  []
def  "def"  False  ["a", "b", "c"]

您可以首先将dict加载到一个系列,然后将其转换为数据帧,继续追加到df列表,最后使用pd.concat合并DFs

df_list = []
df_list.append(pd.Series(dict1).to_frame().T)
df_list.append(pd.Series(dict2).to_frame().T)
pd.concat(df_list).set_index('key1', drop=False).rename_axis('')


    key1    key2    key3
abc abc     True    []
def def     True    [a, b, c]

提供了预期的输出。我刚刚更新了我的问题,这种方法不允许我设置索引标签。我希望我的索引标签是key1。酷,这是有效的。非常感谢。我刚开始学习熊猫,在操作数据帧时,你们认为系列比字典更好吗?不用担心,很高兴它有帮助。如果你觉得有帮助,请投票。