df = pd.DataFrame([[0.012343, 'A'], [0.135528, 'A'], [0.198878, 'A'], [0.199999, 'B'], [0.181121, 'B'], [0.199999, 'B']])
df.columns = ['effect', 'category']
effect category
0 0.012343 A
1 0.135528 A
2 0.198878 A
3 0.199999 B
4 0.181121 B
5 0.199999 B
my_distribution = pd.DataFrame([['A', 1, 0, 1, 1], ['B', 0, 0, 0, 3]])
my_distributions.columns = ['category', '0.0-0.05', '0.05-0.10', 0.1-0.15', '0.15-0.20']
category 0.0-0.05 0.05-0.10 0.1-0.15 0.15-0.20
0 A 1 0 1 1
1 B 0 0 0 3
____________________________________________________________
因此,在短暂的什么,我试图做的是创造箱和计数出现在每个仓的数量,按类别分开。任何帮助将非常感激。
import pandas as pd
df = pd.DataFrame([[0.01, 'A'], [0.13, 'A'], [0.19, 'A'], [0.19, 'B'], [0.18, 'B'], [0.19, 'B']])
df.columns = ['effect', 'category']
labels = ['0.0-0.05', '0.05-0.10', '0.1-0.15', '0.15-0.20']
cuts = df.assign(quant=pd.cut(df.effect, bins=[0.0, 0.05, 0.10, 0.15, 0.20], labels=labels))
# get counts per bin
result = pd.crosstab(cuts.category, columns=cuts.quant)
# reindex with labels to account for bin with 0 counts
result = result.reindex(labels, axis=1).fillna(0).astype(int)
# reset index and rename axis for display purposes
result = result.reset_index().rename_axis(None, axis=1)
print(result)
产量
category 0.0-0.05 0.05-0.10 0.1-0.15 0.15-0.20
0 A 1 0 1 1
1 B 0 0 0 3