我有一个数据帧,它包含一个主要是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
我会尝试从这里开始工作,其他的意见非常感谢。在
为了将字典扩展为具有多个列的数据帧,您应该apply一个函数,该函数将字典作为pandas系列返回。为此,必须先删除
NaN
值。在让我们从一列开始:
s = data1['_id'].dropna()
。下面将返回从字典生成的扩展数据帧:这使用了一个lambda(即内联)函数,该函数将字典转换为一个序列。现在可以将展开的数据帧与原始数据帧合并:
^{pr2}$concat
函数将按索引匹配行,并将缺失索引的NaN
值放入expanded_df
。方便地说,这些将是您在第一步中使用dropna
删除的行。在现在,您可以对
data1
中的所有列执行此操作,方法是像原来一样迭代这些列,或者在data1
上使用apply
。在相关问题 更多 >
编程相关推荐