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