从熊猫数据帧联合分发?

时间:2019-11-20 18:01:02

标签: pandas

我有一个熊猫数据框,其中有两列BA,两列都包含数字。我想从这些列创建一个联合分布,即。我想对两列进行装箱(其中B的每个箱包含{{1}}的每个箱,依此类推以进行联合分配),并将每一行中的数字分配给其中一个箱。最后,我应该获得每个仓中的行数分布。

是否有执行此操作的函数,或者我必须自己编写一个方法?

1 个答案:

答案 0 :(得分:0)

您可以将AB切成自己的垃圾箱,然后应用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