计算 pandas DataFrame 中值的频率
Count frequency of values in pandas DataFrame
有这个pandas.core.frame.DataFrame:
Gorilla A T C C A G C T
Dog G G G C A A C T
Humano A T G G A T C T
Drosophila A A G C A A C C
Elefante T T G G A A C T
Mono A T G C C A T T
Unicornio A T G G C A C T
我想要一个这样的数据框:
A 5 1 0 0 5 5 0 0
C 0 0 1 4 2 0 6 1
G 1 1 6 3 0 1 0 0
T 1 5 0 0 0 1 1 6
基本上,我想要的是逐列计算频繁出现的列并创建第二个 df,如我所示。
我想这样做是因为最后,我想获得一个共识字符串。应该是这样的 A T G C A A C T
谁能帮助我或给我一些建议?
您可以按列使用 Series.value_counts:
print(df.iloc[:, 1:].apply(pd.Series.value_counts).fillna(0))
输出
1 2 3 4 5 6 7 8
A 5.0 1.0 0.0 0.0 5.0 5.0 0.0 0.0
C 0.0 0.0 1.0 4.0 2.0 0.0 6.0 1.0
G 1.0 1.0 6.0 3.0 0.0 1.0 0.0 0.0
T 1.0 5.0 0.0 0.0 0.0 1.0 1.0 6.0
尝试:
result = df.apply(pd.value_counts).fillna(0)
col1 col2 col3 col4 col5 col6 col7 col8
A 5.0 1.0 0.0 0.0 5.0 5.0 0.0 0.0
C 0.0 0.0 1.0 4.0 2.0 0.0 6.0 1.0
G 1.0 1.0 6.0 3.0 0.0 1.0 0.0 0.0
T 1.0 5.0 0.0 0.0 0.0 1.0 1.0 6.0
有这个pandas.core.frame.DataFrame:
Gorilla A T C C A G C T
Dog G G G C A A C T
Humano A T G G A T C T
Drosophila A A G C A A C C
Elefante T T G G A A C T
Mono A T G C C A T T
Unicornio A T G G C A C T
我想要一个这样的数据框:
A 5 1 0 0 5 5 0 0
C 0 0 1 4 2 0 6 1
G 1 1 6 3 0 1 0 0
T 1 5 0 0 0 1 1 6
基本上,我想要的是逐列计算频繁出现的列并创建第二个 df,如我所示。
我想这样做是因为最后,我想获得一个共识字符串。应该是这样的 A T G C A A C T
谁能帮助我或给我一些建议?
您可以按列使用 Series.value_counts:
print(df.iloc[:, 1:].apply(pd.Series.value_counts).fillna(0))
输出
1 2 3 4 5 6 7 8
A 5.0 1.0 0.0 0.0 5.0 5.0 0.0 0.0
C 0.0 0.0 1.0 4.0 2.0 0.0 6.0 1.0
G 1.0 1.0 6.0 3.0 0.0 1.0 0.0 0.0
T 1.0 5.0 0.0 0.0 0.0 1.0 1.0 6.0
尝试:
result = df.apply(pd.value_counts).fillna(0)
col1 col2 col3 col4 col5 col6 col7 col8
A 5.0 1.0 0.0 0.0 5.0 5.0 0.0 0.0
C 0.0 0.0 1.0 4.0 2.0 0.0 6.0 1.0
G 1.0 1.0 6.0 3.0 0.0 1.0 0.0 0.0
T 1.0 5.0 0.0 0.0 0.0 1.0 1.0 6.0