【发布时间】:2017-07-03 22:52:43
【问题描述】:
我想读取一个 CSV 文件并在多个列上计数/聚合
我的输入数据如下
unique_identifier,date,flag1,flag2,flag3
a1,7/1/2017,FALSE,TRUE,FALSE
a2,7/1/2017,FALSE,TRUE,FALSE
a3,7/1/2017,FALSE,TRUE,FALSE
a4,7/1/2017,TRUE,FALSE,FALSE
a5,7/1/2017,FALSE,FALSE,FALSE
a6,7/2/2017,FALSE,FALSE,TRUE
a7,7/2/2017,FALSE,FALSE,TRUE
a8,7/2/2017,FALSE,TRUE,FALSE
q9,7/2/2017,FALSE,TRUE,TRUE
我是 pandas 的新手,到目前为止,通过阅读这里的各种问题,我似乎需要使用 set_index()、.append()、、.join()、.agg() 中的一个或多个
我有个别结果,但无法获得我想要的新结果。
import pandas as pd
df = pd.read_csv("flagdata.csv")
print (df["date"].value_counts())
df_flag1 = df[df.flag1 == True]
df_flag1 = df_flag1["date"].value_counts()
print (df_flag1)
df_flag2 = df[df.flag2 == True]
df_flag2 = df_flag2["date"].value_counts()
print (df_flag2)
df_flag3 = df[df.flag3 == True]
df_flag3 = df_flag3["date"].value_counts()
print (df_flag3)
我想获取每个日期的 True Flags 计数,以创建具有以下结果的新 csv 文件 - 日期、总计数、flag1 真实计数、flag2 真实计数、flag3 真实计数
date,count,flag1,flag2,flag3
7/1/2017,5,1,3,0
7/2/2017,4,0,2,3
【问题讨论】:
-
df.groupby('date').sum().astype(int).assign(count=df.groupby('date').count().flag1).to_csv('output.csv').
标签: python pandas pandas-groupby