我具有以下要在其上应用数据透视表的数据集。
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个计数
data 2018-2-1 2018-2-2 2018-2-3 count
name
ankti a n n 2
vishal a n n 2
注意::如果没有标题的计数列也可以。我希望每行末尾都有n个计数。
答案 0 :(得分:2)
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
答案 1 :(得分:1)
另一种实现方式
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