Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python计数数据帧列中某个值的出现次数_Python_Pandas - Fatal编程技术网

Python计数数据帧列中某个值的出现次数

Python计数数据帧列中某个值的出现次数,python,pandas,Python,Pandas,我有这样一个数据帧: 这是我想要的最后一个数据帧: 我知道我可以使用groupby进行计数,但它只给出总数。我如何将计数分解为“真”和“假”。这样安排 import pandas as pd data = [['a', 'TRUE'], ['a', 'FALSE'], ['a', 'TRUE'], ['b', 'TRUE'], ['b', 'TRUE'], ['b', 'TRUE'], ['b', 'FALSE'], ['c', 'TRUE'], ['c', 'TRUE']] df

我有这样一个数据帧:

这是我想要的最后一个数据帧:

我知道我可以使用groupby进行计数,但它只给出总数。我如何将计数分解为“真”和“假”。这样安排

import pandas as pd

data = [['a', 'TRUE'], ['a', 'FALSE'], ['a', 'TRUE'], ['b', 'TRUE'], ['b', 'TRUE'], ['b', 'TRUE'],
    ['b', 'FALSE'], ['c', 'TRUE'], ['c', 'TRUE']]
df = pd.DataFrame(data, columns=['ID', 'PASS'])


df['value'] = 1
result = df.pivot_table(values='value', index='ID', columns='PASS', aggfunc='sum', fill_value=0)
result['Total'] = result.agg(sum, axis=1)
result

另一种方法是通过groupby和,这样:

df = df.groupby(["ID","PASS"])['PASS'].count().unstack(fill_value=0)
df['total'] = df['FALSE']+df['TRUE']
预期结果:

PASS    FALSE   TRUE    Total
ID          
a         1       2      3
b         1       3      4
c         0       2      2
df.groupby(['ID','PASS'])['PASS'].size().unstack(fill_value=0).assign(Total=lambda x:x.sum(axis=1))
PASS    FALSE   TRUE    Total
ID          
a         1       2      3
b         1       3      4
c         0       2      2