首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据字典转换为数据字典?

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

Stack Overflow用户
提问于 2018-12-28 16:13:01
回答 3查看 79关注 0票数 0

我有一个包含多个键的字典,它有一个值,一个数据框架,如下所示,可以有不同数量的索引。

代码语言:javascript
复制
'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

我想知道如何创建如下所示的数据框架

代码语言:javascript
复制
        str1   str2   str3  ...   str 6
key1     3       4      5    ..    NaN
key2    NaN      3      4    ..    NaN     
key3    NaN     NaN    NaN   ..     5     

当一个值丢失时,使用“NaN”。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-28 16:27:25

我想你只需要concatunstack注意到d是你的dict

代码语言:javascript
复制
pd.concat(d).colB.unstack()
Out[663]: 
colA  str1  str2  str3  str4  str5  str6
k1     3.0   4.0   5.0   NaN   NaN   NaN
k2     NaN   3.0   4.0   NaN   5.0   NaN
k3     NaN   NaN   NaN   3.0   4.0   5.0
票数 1
EN

Stack Overflow用户

发布于 2018-12-28 16:20:52

您可以使用pandas.concat()来完成这个任务。有关Concat文件文档,请参阅此处

例如,假设您的字典名为my_dict,您可以执行以下代码:

代码语言:javascript
复制
pd.concat(my_dict.values())

这假设你已经进口了熊猫作为pd。请参阅嵌入在concat中的选项的文档。

最后,要将它变成您想要的形式,您可以使用:

代码语言:javascript
复制
pd.unstack()

若要将多索引值作为行标题获取,请执行以下操作。或者简单的pd.df.rename()

为了在这里给您更多的建议,最好让代码生成原始数据。

票数 3
EN

Stack Overflow用户

发布于 2018-12-28 16:40:33

参见示例代码:

代码语言:javascript
复制
import pandas as pd
key1 = {'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.T
df_final.head()

代码很简单,如果您需要更多的解释,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53961299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档