首页 > 解决方案 > 比较训练集和有效集之间的 pd.Series 范围

问题描述

假设我有一个训练集和有效集如下:

>>> train
    A    B
0   1  300
1   5  600
2   2  450
>>> valid
      A    B
0  1500  300
1     4  600
2     2  450

对于火车集中的每一列,我想知道 的范围valid[col]是否在 的范围内train[col],这意味着if max(valid[col])<=max(train[col]) and min(valid[col])>=min(train[col])。在这个例子中:

>>> func(train,valid)
          A    B
    0  False  True

除了构建一个for循环来每次检查训练集中的每一列之外,还有没有更好的方法来构建这个函数?

标签: pythonpython-3.xpandas

解决方案


尝试这个:

In [59]: %paste
def f(col):
    return (train[col].max() >= valid[col].max()) & (train[col].min() <= valid[col].min())

## -- End pasted text --

In [60]: train.apply(lambda c: f(c.name))
Out[60]:
A    False
B     True
dtype: bool

作为DF:

In [63]: train.apply(lambda c: f(c.name)).to_frame(0).T
Out[63]:
       A     B
0  False  True

推荐阅读