Python 3.x 计算字典中每个键的每个值的频率,并将计数信息放入数据帧中
目前我有一本这样的字典:Python 3.x 计算字典中每个键的每个值的频率,并将计数信息放入数据帧中,python-3.x,pandas,dataframe,dictionary,count,Python 3.x,Pandas,Dataframe,Dictionary,Count,目前我有一本这样的字典:{'axin':['gaaug','AAAUGC','AAAUGC','GUCAUG','uugau','uugau'],'hedgehog protein':['ACUGGC','GUCAUG','uugau'],'pangolin':['GAACAC','GAAAGA','uugau','AAUACU'] 我想创建一个数据帧,每个键作为一列,每个值作为行名(反之亦然,其实并不重要),同时还计算每个键上每个值的出现次数。 例如,输出的前几行是: axin
{'axin':['gaaug','AAAUGC','AAAUGC','GUCAUG','uugau','uugau'],'hedgehog protein':['ACUGGC','GUCAUG','uugau'],'pangolin':['GAACAC','GAAAGA','uugau','AAUACU']
我想创建一个数据帧,每个键作为一列,每个值作为行名(反之亦然,其实并不重要),同时还计算每个键上每个值的出现次数。
例如,输出的前几行是:
axin hedgehog-protein pangolin
GAUAUG 1 0 0
AAAUGC 2 0 0
GUCAUG 1 1 1
UUUGAU 2 1 1
ACUGGC 0 1 0
我发现的最相似的问题是,它们对每个键都有不同类型的值,因此在各个键之间并不常见。此外,由于每个键的值列表长度不同,ValueError是我经常遇到的问题。在字典理解中使用
计数器
,然后替换缺少的值并转换为整数:
d = {'axin': ['GAUAUG', 'AAAUGC', 'AAAUGC', 'GUCAUG', 'UUUGAU', 'UUUGAU'],
'hedgehog-protein': ['ACUGGC', 'GUCAUG', 'UUUGAU'],
'pangolin': ['GAACAC', 'GAAAGA', 'UUUGAU', 'AAUACU']}
from collections import Counter
df = pd.DataFrame({k: Counter(v) for k, v in d.items()}).fillna(0).astype(int)
print (df)
axin hedgehog-protein pangolin
AAAUGC 2 0 0
AAUACU 0 0 1
ACUGGC 0 1 0
GAAAGA 0 0 1
GAACAC 0 0 1
GAUAUG 1 0 0
GUCAUG 1 1 0
UUUGAU 2 1 1
谢谢,非常简单的解决方案@jezrael如何将键转换为行,将值转换为列?@dondapati-使用
df=pd.DataFrame.from_dict({k:Counter(v)表示k,v表示d.items()},orient='index')。fillna(0)。astype(int)