背景:dataFrame的數據,想對某一個列做邏輯處理,生成新的列,或覆蓋原有列的值
下面例子中的df均為pandas.DataFrame()的數據
1、增加新列,或更改某列的值
df["列名"]=值
如果值為固定的一個值,則dataFrame中該列所有值均為這個數據
2、處理某列
df["列名"]=df.apply(lambda x:方法名(x,入參2),axis=1)
說明:
1、方法名為單獨的方法名,可以處理傳入的x數據
2、x為每一行的數據,做為方法的入參1;x中的數據可以用【x.列名】來獲取
3、入參2等為方法需要的其他參數,不需要可以不寫
4、axis=1,表示每次取一行數據進行處理,按行處理
例子如下:
根據列title的是否包含特定詞,來賦值給新的列1或0的值
bugInfo['IntegrationTest'] = bugInfo.apply(lambda x: self.bug_rule(x, "IntegrationTest"), axis = 1) def bug_rule(self, frame, type): # 處理列表中的數據,更新到sql數據庫中 result = "0" if type == "SmokeTest": # 冒煙測試 if re.search("^\[冒煙\]|\[冒煙測試\]|【冒煙】|【冒煙測試】", frame["title"]): result = "1" elif type == "InterfaceTest": # 接口測試 if re.search("^\[接口\]|\[接口測試\]|【接口】|【接口測試】", frame["title"]): result = "1" elif type == "IntegrationTest": # 集成測試 if self.IntegrationTime != "" and self.IntegrationTime == frame["created_time"]: result = "1" return result