不规范条件过滤数据帧,求大师的帮忙,谢谢
import pandas as pddata = [['AA','光伏设备/2.51?医疗服务/3.75?色金属6.39'],
['BW','色金属/4.39?电子/5.31?电设/18.2'],
['BW','电子/5.31?金属/5.31?电设/18.2'],
['BG','色金属/8.39?电子元件/5.31?设备/8.82']]
columns = ["编号",'清单']
df = pd.DataFrame(data, columns=columns)
print(df)
上述数据帧的《清单》列,可以根据某条件:如,色金属/5.88过滤掉不符合要求的行
就是两个条件,一是色金属,二是反斜杠后面的数字要大于5.88
有什么好办法吗?求大师的帮忙,谢谢
结果;
编号 清单
0AA光伏设备/2.51?医疗服务/3.75?色金属6.39
3BG 色金属/8.39?电子元件/5.31?设备/8.82 我可以帮你用 pandas 过滤数据帧。根据你的要求,你需要根据《清单》列中的子字符串“色金属”和反斜杠后面的数字是否大于 5.88 来过滤行。你可以参考以下的代码:
# 导入 pandas 模块
import pandas as pd
# 创建数据帧
data = [['AA','光伏设备/2.51 ?医疗服务/3.75 ?色金属6.39'],
['BW','色金属/4.39 ?电子/5.31 ?电设/18.2'],
['BW','电子/5.31 ?金属/5.31 ?电设/18.2'],
['BG','色金属/8.39 ?电子元件/5.31 ?设备/8.82']]
columns = ["编号",'清单']
df = pd.DataFrame(data, columns=columns)
# 定义一个函数,用来判断清单中是否包含“色金属”和大于 5.88 的数字
def filter_func(x):
# 如果清单中包含“色金属”,则分割字符串并获取数字
if "色金属" in x:
num = float(x.split("色金属").split("?").strip("/"))
# 如果数字大于 5.88,返回 True,否则返回 False
return num > 5.88
# 如果清单中不包含“色金属”,返回 False
else:
return False
# 使用 apply 方法和 lambda 表达式,对数据帧的清单列应用过滤函数
df_filtered = df.apply(lambda x: filter_func(x))]
# 打印过滤后的数据帧
print(df_filtered)
页:
[1]