这是我的python代码:
在下面的输出samplefile1
中的所有已通过了3行,以便newcolumn{"filestatus" : "passed"}
为"InputFile":"samplefile1"
因为example
它有一个pass
和一个fail
因此{"filestatus":"failed"}
所有的新列{"inputfile":"example"}
import json
df = 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 filename
Input_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' column
FinalDF = pd.merge(df, Input_status_count,on = "InputFile" )
JSON_String = FinalDF.to_json(orient='records')
JSON_String
output:
[
{"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"}
]
您可以使用pd.crosstab(而不是复杂的agg)将通过和失败列表化,并且在没有失败的情况下通过status列:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句