我有一个熊猫数据框,其中有两列B
和A
,两列都包含数字。我想从这些列创建一个联合分布,即。我想对两列进行装箱(其中B
的每个箱包含{{1}}的每个箱,依此类推以进行联合分配),并将每一行中的数字分配给其中一个箱。最后,我应该获得每个仓中的行数分布。
是否有执行此操作的函数,或者我必须自己编写一个方法?
答案 0 :(得分:0)
您可以将A
和B
切成自己的垃圾箱,然后应用groupby
对其进行计数:
# Some sample input data
np.random.seed(42)
df = pd.DataFrame(np.random.randint(1, 1000, (1000, 2)), columns=['A', 'B'])
# Assign values in columns A & B into 5 bins each
# The bins in A are independent of the bins in B
df['BinA'] = pd.cut(df['A'], 5, labels=[f'a{i}' for i in range(1,6)])
df['BinB'] = pd.cut(df['B'], 5, labels=[f'b{i}' for i in range(1,6)])
# The count
df.groupby(['BinA', 'BinB']).count()
结果:
A B
BinA BinB
a1 b1 44 44
b2 39 39
b3 35 35
b4 53 53
b5 41 41
a2 b1 40 40
b2 36 36
b3 34 34
b4 33 33
b5 31 31
a3 b1 35 35
b2 44 44
b3 30 30
b4 31 31
b5 39 39
a4 b1 48 48
b2 38 38
b3 46 46
b4 37 37
b5 43 43
a5 b1 50 50
b2 43 43
b3 36 36
b4 50 50
b5 44 44