python pandas - groupby unstack pivot - count len - 混合值和导出

时间:2015-10-31 17:02:08

标签: python pandas

我尝试组合大约70,000行的文件中的数据。对于几种类型的结果,我需要导出文件(例如csv类型)

导入后包含数据的文件返回此df:

df = pd.DataFrame({
 'sec_Id':["to","ti","tu","ta","ty","te"], 
 'sec_Orga':['CNP','COF','COF','POS','POS','POS'], 
 'sec_Etat':['Sorti(e)','Valide','Suspendu(e)','Valide','Suspendu(e)','Suspendu(e)']
 })


df
Out[59]: 
      sec_Etat  sec_Id  sec_Orga
0     Sorti(e)      to       CNP
1       Valide      ti       COF
2  Suspendu(e)      tu       COF
3       Valide      ta       POS
4  Suspendu(e)      ty       POS
5  Suspendu(e)      te       POS

最后我得到了这个总体结果:

      Total  Valide  Suspendu(e)  Sorti(e)
CNP       1       0            0         1
COF       2       1            1         0
POS       3       1            2         0

正如你所看到的,这是一个结合了“总数”的价值观。具有唯一值' sec_Etat"的列标题栏目......

我尝试使用groupby,unstake,pivot但没有任何效果......

之后我必须导出csv文件的数据......我怎么能这样做?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用pivot_table方法。对于aggfunc参数,请使用len。这将返回所提供的indexcolumn的项目计数。最后,只需对axis=1的行进行求和。使用.to_csv导出。

参见代码:

import pandas as pd

df = pd.DataFrame({
    'sec_Id': ["to", "ti", "tu", "ta", "ty", "te"],
    'sec_Orga': ['CNP', 'COF', 'COF', 'POS', 'POS', 'POS'],
    'sec_Etat': ['Sorti(e)', 'Valide', 'Suspendu(e)', 'Valide', 'Suspendu(e)', 'Suspendu(e)']
})

pivot = df.pivot_table(index='sec_Orga', columns='sec_Etat', aggfunc=len)
pivot["total"] = pivot.sum(axis=1)

print pivot

# pivot.to_csv("p.csv") # Export to CSV file. Uncomment to use.