我有一个如下所示的数据框:
TF name
0 A
1 A
0 A
0 A
1 B
1 B
0 B
1 B
1 B
我需要生成一个结果数据框,用于计算我的数据框中每个人有多少个 0 和 1。
所以上面的结果是:
name True False
A 3 1
B 1 4
我认为 groupby 在这种情况下不起作用。除了循环和计数之外还有其他解决方案吗?
请您参考如下方法:
您可以执行 groupby 让 TF 成为分组键。取对应的value_counts name 列以获得不同的计数。
拆开多索引系列的 level=0 以便生成数据框对象。最后,通过将整数列类型转换为 bool 值来重命名它们。
df.groupby('TF')['name'].value_counts().unstack(0).rename(columns=bool)
要让列名采用字符串值:
1) 使用lambda函数:
<...operations on df...>.rename(columns=lambda x: str(x.astype(bool)))
2) 或者将语法链接在一起:
<...operations on df...>.rename(columns=bool).rename(columns=str)
