簡體   English   中英

python pandas過濾並聚合多個列並寫入CSV

[英]python pandas filter and aggregate multiple columns and write into CSV

我想讀取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

對熊貓來說是新手,到目前為止通過閱讀各種問題看起來我需要使用set_index(),. append(),.。join(),. gog()中的一個或多個

我有個別結果,但無法得到我想要的新結果。

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文件 - date,total count,flag1 true count,flag2 true count,flag3 true count

date,count,flag1,flag2,flag3
7/1/2017,5,1,3,0
7/2/2017,4,0,2,3

您需要按日期對行進行分組並計算並對標記求和:

result = pd.concat([df.groupby('date').count()['flag1'],
                    df.groupby('date').sum()], 
                    axis=1).astype(int)
result.columns = ['count'] + result.columns[1:].tolist() 
#          count  flag1  flag2  flag3
#date                                
#7/1/2017      5      1      3      0
#7/2/2017      4      0      2      3

result.to_csv('output.csv')

groupby()並將新計數字段reset_index創建為“count”,然后在seconf df groupby中創建所有True sum

df1= df.groupby("date")["date"].count().reset_index(name="count")
df2= df.groupby("date").sum().astype(int).reset_index()
df3 = pd.merge(df1,df2, on="date")
df3.to_csv("output.csv",index=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM