根据其他列中的值计算列中项目的出现次数 - Python
Count occurrence of items in column depending on value in other column - Python
我目前有一个 table 类似于这个:
CRED | ACBA
1 | 2
0 | 3
1 | 4
1 | 2
0 | 1
等...
根据 CRED (1,0) 中的值,我能够获取有关 ACBA 列中类别 (1,2,3,4) 出现频率的信息:
pd.crosstab(df.CRED, df.ACBA)
ACBA 1 2 3 4
CRED
0 9 11 1 7
1 18 22 4 28
现在我想将 ACBA 的值与特定的 CRED 值相加,然后将每个单个值除以该总和,并用结果创建一个新的 table。例如:
For CRED = 0 --> 9+11+1+7=28 then --> 9/28 11/28 1/28 7/28 to reach the final table:
1 2 3 4
CRED0 0.25 0.30 0.055 0.38
有没有人知道如何做到这一点?我是 Python 的新手,完全坚持这一点。我的想法是,我将在其他 22 个 columns.Thanks
中重复此技术
a = {'CRED': [1,0,1,1,0], 'ACBA': [2,3,4,2,1]}
df = pd.DataFrame(a)
输出
ACBA CRED
0 2 1
1 3 0
2 4 1
3 2 1
4 1 0
那么就如你所用crosstab
它
df1 = pd.crosstab(df.CRED, df.ACBA)
ACBA 1 2 3 4
CRED
0 1 0 1 0
1 0 2 0 1
然后得到百分比
df1.apply(lambda a: a / a.sum() * 100, axis=1)
ACBA 1 2 3 4
CRED
0 50.0 0.000000 50.0 0.000000
1 0.0 66.666667 0.0 33.333333
我目前有一个 table 类似于这个:
CRED | ACBA
1 | 2
0 | 3
1 | 4
1 | 2
0 | 1
等...
根据 CRED (1,0) 中的值,我能够获取有关 ACBA 列中类别 (1,2,3,4) 出现频率的信息:
pd.crosstab(df.CRED, df.ACBA)
ACBA 1 2 3 4
CRED
0 9 11 1 7
1 18 22 4 28
现在我想将 ACBA 的值与特定的 CRED 值相加,然后将每个单个值除以该总和,并用结果创建一个新的 table。例如:
For CRED = 0 --> 9+11+1+7=28 then --> 9/28 11/28 1/28 7/28 to reach the final table:
1 2 3 4
CRED0 0.25 0.30 0.055 0.38
有没有人知道如何做到这一点?我是 Python 的新手,完全坚持这一点。我的想法是,我将在其他 22 个 columns.Thanks
中重复此技术a = {'CRED': [1,0,1,1,0], 'ACBA': [2,3,4,2,1]}
df = pd.DataFrame(a)
输出
ACBA CRED
0 2 1
1 3 0
2 4 1
3 2 1
4 1 0
那么就如你所用crosstab
它
df1 = pd.crosstab(df.CRED, df.ACBA)
ACBA 1 2 3 4
CRED
0 1 0 1 0
1 0 2 0 1
然后得到百分比
df1.apply(lambda a: a / a.sum() * 100, axis=1)
ACBA 1 2 3 4
CRED
0 50.0 0.000000 50.0 0.000000
1 0.0 66.666667 0.0 33.333333