我有一个数据框
df = pd.DataFrame([["A",20,True],["C",21,True],["B",20,False],["A",21,False],["B",20,False],["A",20,False]],columns=["id1","id2","val1"])
个字符
我需要在id1和id2 groupby级别的True和False总数。
预期输出1
df_out1 = pd.DataFrame([["A",20,1,1],["A",21,0,1],["B",20,0,2],["C",21,1,0]],columns=["id1","id2","Total_True","Total_False"])
id1 id2 Total_True Total_False
A 20 1 1
A 21 0 1
B 20 0 2
C 21 1 0
的字符串
此外,我需要另一个输出,告诉有多少id1和id2组合有所有的真值,有多少所有的假值,有多少id1和id2组合既有真值又有假值。
预期输出2
df_out2 = pd.DataFrame([["All_True",1],["All_False",2],["Both_TrueFalse",1]],columns=["Type","Total_id"])
Type Total_id
All_True 1
All_False 2
Both_TrueFalse 1
的字符串
在Pandas身上怎么做?
2条答案
按热度按时间vmdwslir1#
第1部分:计算频率表
字符串
第2部分:使用布尔代数计算满足给定条件的值
型
ogq8wdun2#
如果你不需要第一个输出(a
crosstab
),你可以直接通过计算每个id的平均值(groupby.mean
)来得到最后一个,所有的True都会给予你1,所有的False都会给你0,任何组合都会介于两者之间:字符串
输出量:
型