如何将数据框字典转换为数据框?

我有一个包含多个键的字典,其中包含一个 Data Frame 值,如下所示,并且可以具有不同数量的索引。


'key1':


            colB

    colA   

    str1       3

    str2       4

    str3       5


'key2':


            colB

    colA   

    str2       3

    str3       4

    str5       5


'key3':


            colB

    colA   

    str4       3

    str5       4

    str6       5

我想知道如何创建一个看起来像的数据框


        str1   str2   str3  ...   str 6

key1     3       4      5    ..    NaN

key2    NaN      3      4    ..    NaN     

key3    NaN     NaN    NaN   ..     5     

缺少值时使用“NaN”。


我已经通过使用 reset_index 来完成它,为每个数据帧创建熊猫系列,然后查找每行的匹配值以重新创建正确的数据帧,但我发现它非常慢而且根本不是最佳的。


富国沪深
浏览 211回答 3
3回答

侃侃尔雅

您可以使用pandas.concat(). 有关文档,请参见此处Concat 文档例如,假设您的字典被调用,my_dict您可以执行以下代码:pd.concat(my_dict.values())这假设您已经将 Pandas 作为 pd 导入。有关嵌入在 concat 中的选项,请参阅文档。最后要注意的是,要将其转换为您想要的形式,您可以使用:pd.unstack()获取多索引值作为行标题。或者干脆pd.df.rename()为了给你更多的建议,拥有生成原始数据帧的代码会很有帮助。

不负相思意

我认为你需要的只是concat并unstack注意的d是你的dictpd.concat(d).colB.unstack()Out[663]: colA  str1  str2  str3  str4  str5  str6k1     3.0   4.0   5.0   NaN   NaN   NaNk2     NaN   3.0   4.0   NaN   5.0   NaNk3     NaN   NaN   NaN   3.0   4.0   5.0

尚方宝剑之说

查看示例代码:import pandas as pdkey1 = {'str1':3,'str2':4,'str3':5}key2 = {'str2':3,'str3':4,'str5':5}key3 = {'str4':3,'str5':4,'str6':5}df1=pd.DataFrame.from_dict(key1, orient='index')df1.rename(columns={0:'key1'},inplace=True)df2=pd.DataFrame.from_dict(key2, orient='index')df2.rename(columns={0:'key2'},inplace=True)df3=pd.DataFrame.from_dict(key3, orient='index')df3.rename(columns={0:'key3'},inplace=True)df = pd.concat([df1,df2,df3],axis=1)df_final=df.Tdf_final.head()代码非常简单,如果您需要更多解释,请告诉我。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python