我的df1
:
cnpj num_doc bc_icms
0 02817342000124 0000010154 17827.07
1 54921580000189 0000112428 108000.00
2 08953538000122 0000012865 232.00
3 08953538000122 0000012865 239.00
4 08953538000122 0000012865 215.00
5 07374346000107 0000014224 320.12
6 07374346000107 0000014231 385.04
7 07374346000107 0000014263 401.28
8 07374346000107 0000014279 391.26
9 02364118000124 0000015263 37353.10
10 02364118000124 0000015264 56214.14
df1.dtypes
的输出:
cnpj object
num_doc object
bc_icms float64
dtype: object
所以....我正在尝试创建一个数据透视表来回答以下问题:
每个
sum
bc_icms
的{{1}}是什么?
这就是我写的:
cnpj
这是输出:
indexes = [np.array(df1['cnpj']), np.array(df1['num_doc'])]
pt1 = pd.DataFrame(df1['bc_icms'], index=indexes)
print pt1
我认为这是我想要的数据透视表结构!好!但...
如何修复这些NaN?
如何为每个cnpj创建一个“sum”行?
Excel中的示例:
答案 0 :(得分:6)
IIUC,您需要每个cnpj
值的总和,因此我将使用groupby作为:
g = df.groupby('cnpj')['bc_icms'].sum().reset_index(name='sum')
返回:
cnpj sum
0 2364118000124 93567.24
1 2817342000124 17827.07
2 7374346000107 1497.70
3 8953538000122 686.00
4 54921580000189 108000.00
希望有所帮助。
编辑:
你也可以使用:
g = df.groupby(['cnpj','num_doc'])['bc_icms'].sum()
返回完整的数据帧:
cnpj num_doc
2364118000124 15263 37353.10
15264 56214.14
2817342000124 10154 17827.07
7374346000107 14224 320.12
14231 385.04
14263 401.28
14279 391.26
8953538000122 12865 686.00
54921580000189 112428 108000.00