亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們可以再添加一列“filestatus”,并使用 pandas 在狀態列上添加邏輯嗎

我們可以再添加一列“filestatus”,并使用 pandas 在狀態列上添加邏輯嗎

嗶嗶one 2023-08-22 17:54:21
這是我的Python代碼:在下面的輸出中samplefile1已傳入所有 3 行,因此 newcolumn{"filestatus" : "passed"}為"InputFile":"samplefile1"因為example它有一個pass又一個fail如此新的{"filestatus":"failed"}欄目{"inputfile":"example"}import jsondf = pd.DataFrame([            ['samlefile1','[email protected]', 'xyz' ,'pass'],            ['samlefile1','[email protected]', 'xyz' ,'pass'],            ['samlefile1','[email protected]', 'xyz' ,'pass'],            ['testfile','[email protected]', 'abc' ,'pass'],            ['example','[email protected]', 'xyz' ,'pass'],            ['example','[email protected]', 'xyz' ,'fail']],columns = ['InputFile','UserId', 'UserGroup' ,'status']    )#Count no of status per filenameInput_status_count = df.groupby(['InputFile']).agg(success_count=('status', lambda x: x[x == 'pass'].count()),                                                           fail_count=('status', lambda x: x[x == 'fail'].count()))        #Merge the 2 files on 'InputFile' columnFinalDF = pd.merge(df, Input_status_count,on = "InputFile" )JSON_String = FinalDF.to_json(orient='records')JSON_Stringoutput:[    {"InputFile":"samlefile1","UserId":"[email protected]","UserGroup":"xyz","status":"pass","success_count":3,"fail_count":0, "filestatus":"passed"},    {"InputFile":"samlefile1","UserId":"[email protected]","UserGroup":"xyz","status":"pass","success_count":3,"fail_count":0, "filestaus":"passed"},    {"InputFile":"samlefile1","UserId":"[email protected]","UserGroup":"xyz","status":"pass","success_count":3,"fail_count":0, "filestatus":"passed"},    {"InputFile":"testfile","UserId":"[email protected]","UserGroup":"abc","status":"","success_count":1,"fail_count":0, "filestatus":"not ran"},    {"InputFile":"example","UserId":"[email protected]","UserGroup":"xyz","status":"pass","success_count":1,"fail_count":1,"filestatus":"failed"},    {"InputFile":"example","UserId":"[email protected]","UserGroup":"xyz","status":"fail","success_count":1,"fail_count":1, "filestatus": "failed"}]
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

是的,你可以這樣做:


import numpy as np


#Count no of status per filename

Input_status_count = df.groupby(['InputFile']).agg([('filestatus', lambda x: 'passed' if x[x['status'] == 'fail'].count() == 0 else 'failed')])

Lambda 函數基本上檢查我們是否獲得狀態為失敗的零行計數,然后文件狀態將被傳遞,否則失敗。


查看完整回答
反對 回復 2023-08-22
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

您可以使用 pd.crosstab (而不是復雜的 agg)將通過和失敗制成表格,并且當沒有失敗時狀態列將通過:


Input_status_count = pd.crosstab(df['InputFile'],df['status']).reset_index()

Input_status_count['filestatus'] = ["passed" if i==0 else "failed" for i in Input_status_count['fail']]


Input_status_count


status   InputFile  fail  pass filestatus

0          example     1     1     failed

1       samlefile1     0     3     passed

2         testfile     0     1     passed


查看完整回答
反對 回復 2023-08-22
  • 2 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號