计算pandas DF中的实例

时间:2017-01-11 15:20:39

标签: python pandas

我有一个如下所示的数据框:

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在这种情况下无效。循环和计数以外的任何解决方案?

2 个答案:

答案 0 :(得分:4)

您可以执行groupby TF 成为分组键。获取名称列的相应value_counts以获取不同的计数。

多索引系列的取消堆栈level=0,以便生成数据框对象。最后,通过将它们类型转换为布尔值来重命名整数列。

df.groupby('TF')['name'].value_counts().unstack(0).rename(columns=bool)

enter image description here

使列名采用字符串值:

1)使用lambda功能:

<...operations on df...>.rename(columns=lambda x: str(x.astype(bool)))

2)或将语法链接在一起:

<...operations on df...>.rename(columns=bool).rename(columns=str)

答案 1 :(得分:2)

我首先将您的列转换为布尔值,然后按名称和TF进行分组,然后将布尔列TF取消堆栈。

df['TF']=df['TF'].astype(bool)
df.groupby(['name', 'TF']).size().unstack('TF')

TF    False  True 
name              
A         3      1
B         1      4