项目场景:
师妹有这样一张表:
希望能按inchikey进行分组,然后删除掉logD最大值最小值数据相差超过百分之三十的数据,对剩下的数据进行取平均数的方法进行去重
解决方案:
import pandas as pd
data = pd.read_csv("xxxxxxxxx")
#删除浮动超过百分之30的数据
data_valid = data.groupby(
["Smiles (InChiKey)"], as_index=False).filter(
lambda x:max(x.logD.values) - min(x.logD.values) <= 0.3 * min(x.logD.values))
#利用平均值去重
result = data_valid.groupby(
["Smiles (InChiKey)"], as_index=False).agg({
"Smiles (InChi)": lambda x: x.iloc[0],
"Smiles": lambda x: x.iloc[0],
"logD": 'mean'})