Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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,我有以下数据集,我想在其上应用透视表 import pandas as pd import numpy as np df2 = pd.DataFrame(np.array([ ['vishal','2018-2-1' ,'a' ], ['vishal','2018-2-2' , 'n'], ['vishal','2018-2-3' , 'n'], ['ankti','2018-2-1' , 'a'], ['ankti

我有以下数据集,我想在其上应用透视表

import pandas as pd
import numpy as np
df2 = pd.DataFrame(np.array([
        ['vishal','2018-2-1' ,'a' ],
        ['vishal','2018-2-2' , 'n'],
        ['vishal','2018-2-3' , 'n'],
        ['ankti','2018-2-1' , 'a'],
        ['ankti','2018-2-2' , 'n'],
        ['ankti','2018-2-3' , 'n']]),columns=['name', 'date', 'shift'])

name      date      shift
vishal  2018-2-1     a
vishal  2018-2-2     n
vishal  2018-2-3     n
ankti   2018-2-1     a
ankti   2018-2-2     n
ankti   2018-2-3     n 
我将以下代码应用于上述数据集,并将上述数据集存储在df2变量中

table = pd.pivot_table(df2, values='shift', index=['name'], columns=['date'],aggfunc={'shift':np.sum})
print(table)
现在我得到以下结果

输出:

data      2018-2-1    2018-2-2    2018-2-3
name                            
ankti      a             n            n
vishal     a             n            n
现在我想要一个额外的列,它包含额外的列,它包含n的计数

最终结果如下所示 计数列显示每行中存在的n的计数

注意:如果计数列没有标题也可以。我想在每一行的末尾计算n的计数。

用于:


另一种方法可以做到这一点

df2 = pd.DataFrame(np.array([
    ['vishal', '2018-2-1', 'a'],
    ['vishal', '2018-2-2', 'n'],
    ['vishal', '2018-2-3', 'n'],
    ['ankti', '2018-2-1', 'a'],
    ['ankti', '2018-2-2', 'n'],
    ['ankti', '2018-2-3', 'n']]), columns=['name', 'date', 'shift'])
table = pd.pivot_table(df2, values='shift', index=['name'], columns=['date'], aggfunc={'shift': np.sum})
print(table)
table['count'] = table.apply(lambda x: np.sum(x.values == 'n'), axis=1)
输出:


请逐行执行以上代码,并帮助我获得最终结果answer@Vishal请了解如何理解答案,而不要求用户填鸭式地将解决方案提供给您,使您只需要复制粘贴,而不需要进一步理解任何内容。您还可以尝试稍作修改:table[count]=table.applylambda row:sumrow[0:]=='n',axis=1不,你们不应该,行[0:3]将是静态的,若数据透视表的列数超过3,那个么它将是错误的。Sandep的答案更有效,我只是指出了其他解决方案。
table = pd.pivot_table(df2, values='shift', index=['name'], 
                       columns=['data'],aggfunc={'shift':np.sum})

table['count'] = table.eq('n').sum(1)

print(table)
date   2018-2-1 2018-2-2 2018-2-3  count
name                                    
ankti         a        n        n      2
vishal        a        n        n      2
df2 = pd.DataFrame(np.array([
    ['vishal', '2018-2-1', 'a'],
    ['vishal', '2018-2-2', 'n'],
    ['vishal', '2018-2-3', 'n'],
    ['ankti', '2018-2-1', 'a'],
    ['ankti', '2018-2-2', 'n'],
    ['ankti', '2018-2-3', 'n']]), columns=['name', 'date', 'shift'])
table = pd.pivot_table(df2, values='shift', index=['name'], columns=['date'], aggfunc={'shift': np.sum})
print(table)
table['count'] = table.apply(lambda x: np.sum(x.values == 'n'), axis=1)
date   2018-2-1 2018-2-2 2018-2-3  count
name                                    
ankti         a        n        n      2
vishal        a        n        n      2