Python 带有分类数据和自定义“数据框”列的直方图/值计数;垃圾箱;

Python 带有分类数据和自定义“数据框”列的直方图/值计数;垃圾箱;,python,pandas,histogram,categorical-data,Python,Pandas,Histogram,Categorical Data,考虑以下数据帧: import pandas as pd x = pd.DataFrame([[ 'a', 'b'], ['a', 'c'], ['c', 'b'], ['d', 'c']]) print(x) 0 1 0 a b 1 a c 2 c b 3 d c 我想根据一些定制的“容器”(可能是唯一数据值的超集),获得数据帧每列中数据的相对频率。例如,如果: b = ['a', 'b', 'c', 'd', 'e', 'f'] 我想获得: 0 1 a

考虑以下数据帧:

import pandas as pd

x = pd.DataFrame([[ 'a', 'b'], ['a', 'c'], ['c', 'b'], ['d', 'c']])
print(x)

   0  1
0  a  b
1  a  c
2  c  b
3  d  c
我想根据一些定制的“容器”(可能是唯一数据值的超集),获得数据帧每列中数据的相对频率。例如,如果:

b = ['a', 'b', 'c', 'd', 'e', 'f']
我想获得:

   0  1
a  2  0
b  0  2
c  1  2
d  1  0
e  0  0
f  0  0
是否有一个(或两个)班轮来实现这一点?

尝试,然后基于b:

import pandas as pd

x = pd.DataFrame([['a', 'b'], ['a', 'c'], ['c', 'b'], ['d', 'c']])

b = ['a', 'b', 'c', 'd', 'e', 'f']
df = x.apply(lambda s: s.value_counts()).reindex(b).fillna(0).astype(int)

print(df)
df

   0  1
a  2  0
b  0  2
c  1  2
d  1  0
e  0  0
f  0  0
   0  1
a  2  0
b  0  2
c  1  2
d  1  0
e  0  0
f  0  0

A和选择:

df

   0  1
a  2  0
b  0  2
c  1  2
d  1  0
e  0  0
f  0  0
   0  1
a  2  0
b  0  2
c  1  2
d  1  0
e  0  0
f  0  0

第一种方法对我来说更直观。