数据帧更新密钥

2024-04-20 14:09:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法使用pd.update()函数更新熊猫Dataframe,我总是得到None结果。 我使用的是带有键的Dataframe,这是连接2Dataframes的结果。你知道吗

我只为float32列计算z1 score,然后用float32列的新值更新Dataframe。你知道吗

class MySimpleScaler(object):
  def __init__(self):
    self._means = None
    self._stds = None

  def preprocess(self, data):
    """Calculate z-score for dataframe"""
    if self._means is None: # During training only
      self._means = data.select_dtypes('float32').mean()
    if self._stds is None: # During training only
      self._stds = data.select_dtypes('float32').std()
      if not self._stds.all():
        raise ValueError('At least one column has standard deviation of 0.')
    z1 = (data.select_dtypes('float32') - self._means) / self._stds
    return data.update(z1)
all_x = pd.concat([train_x, eval_x], keys=['train', 'eval'])
scaler = MySimpleScaler()
all_x = scaler.preprocess(all_x)
train_x, eval_x = all_x.xs('train'), all_x.xs('eval')

当我运行data.update(z1)时,它总是返回None。你知道吗

稍后我需要重用scaler对象来计算新数据帧的z分数。你知道吗


Tags: selfnonedataframedataifevalupdatetrain