pandas DataFrame 指定列数据处理与新增列方法
本文介绍在 pandas DataFrame 中对指定列进行逻辑处理并生成新列或覆盖原值的方法。通过 df.apply 结合 lambda 函数,可实现按行处理数据。示例展示了如何根据列内容匹配特定关键词,利用正则表达式判断条件并赋值,适用于自动化测试分类等场景。
pandas DataFrame 指定列数据处理与新增列方法
背景:在处理 DataFrame 数据时,通常需要对某一特定列执行逻辑运算,从而生成一个新的列,或者直接覆盖该列原有的数值。
下文示例中涉及的 df 变量均为 pandas.DataFrame 类型的数据对象。
增加新列或更改某列的值
1、增加新列,或更改某列的值
df["列名"]=值
若赋值为固定的单一数值,则 DataFrame 中该列的所有行数据均会被统一设置为该值。
按行处理某列数据的实现细节
2、处理某列
df["列名"]=df.apply(lambda x:方法名(x,入参2),axis=1)
说明:
1、方法名需为独立的函数定义,用于处理传入的参数 x 数据。
2、x 代表 DataFrame 中的每一行数据,作为方法的第一个入参;可以通过【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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









