如何通过列中平均值的差异来过滤数据集?

How to filter dataset by difference of mean values in columns?

我有一个数据框:

id1     vals1   id2    vals2
a1      [5,6]   b1     [8]
c1      [5,3]   e1     [4,5,6]

我想计算 vals1 和 vals2 的平均值,如果这些平均值之间的差值绝对值大于 1,则过滤我的数据框,以删除该行。怎么做?

所以期望的结果是:

id1     vals1   id2    vals2
c1      [5,3]   e1     [4,5,6]

你可以试试这样:

from statistics import mean

res = df.loc[df.apply(lambda x: mean(x.vals1) - mean(x.vals2),1).abs()<=1]

>>> res
'''
  id1   vals1 id2      vals2
1  c1  [5, 3]  e1  [4, 5, 6]