用字典扩展数据帧

2024-10-02 18:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,它包含一个主要是NaN的,但某些条目中也有字典。我的目标是将这些字典扩展到数据帧的列,并将它们的条目保留在各自的索引中。 这就是数据帧的一小部分。在

                                                                       _id  _score 
query                                                        
chrM:g.146T>C                                                            NaN  NaN  
chrM:g.11723C>T                                                          NaN  NaN                                       NaN  NaN   
chrM:g.11813A>G                                                          NaN  NaN   
chrM:g.12140T>A                                                          NaN  NaN   
...                                                                      ...  ...     
chr1:g.11976370T>G         {u'ref': u'T', u'alleles': [{u'allele': u'T', ...  NaN   
chr1:g.12007164A>G                                                       NaN  NaN   
chr1:g.12007165A>G                                                       NaN  NaN 

到目前为止,我已经成功地选择了每个dict的键并添加了用这些键命名的列:

^{pr2}$

任何帮助或提示如何这样做,以一个高效和可读性将不胜感激。在

**编辑:**此代码:

y = pandas.Series((dbsnp.iloc[0]))
print y

但是检索到一些有用的信息:

allele_origin                   unspecified
alleles                         [{u'allele': u'G'}, {u'allele': u'A'}]      
alt                              A
...                              ...
rsid                             rs201327123
vartype                          snp
dtype: object

我会尝试从这里开始工作,其他的意见非常感谢。在


Tags: 数据refid目标字典条目nanquery
1条回答
网友
1楼 · 发布于 2024-10-02 18:26:31

为了将字典扩展为具有多个列的数据帧,您应该apply一个函数,该函数将字典作为pandas系列返回。为此,必须先删除NaN值。在

让我们从一列开始:s = data1['_id'].dropna()。下面将返回从字典生成的扩展数据帧:

expanded_df = s.apply(lambda row: pandas.Series(row))

这使用了一个lambda(即内联)函数,该函数将字典转换为一个序列。现在可以将展开的数据帧与原始数据帧合并:

^{pr2}$

concat函数将按索引匹配行,并将缺失索引的NaN值放入expanded_df。方便地说,这些将是您在第一步中使用dropna删除的行。在

现在,您可以对data1中的所有列执行此操作,方法是像原来一样迭代这些列,或者在data1上使用apply。在

相关问题 更多 >