Я буду использовать describe
df=pd.concat([pd.Series(x) for x in [X_1, X_2]], axis=0, keys=['X_1', 'X_2'])# notice here I am using axis=0 rather than 1
df.groupby(level=0).describe()
Out[442]:
count mean std min 25% 50% 75% max
X_1 3.0 2.0 1.000000 1.0 1.5 2.0 2.5 3.0
X_2 5.0 6.0 1.581139 4.0 5.0 6.0 7.0 8.0
особые случаи
X_1 = [1,2,np.nan]
X_2 = [4,5,6,7,8]
df=pd.concat([pd.Series(x) for x in [X_1, X_2]], axis=0, keys=['X_1', 'X_2'])
df.groupby(level=0).size()
Out[445]:
X_1 3
X_2 5
dtype: int64
Прежде чем это будет отправлено базе данных, можно написать код в контроллере, который возьмет параметры и добавит другую информацию перед сохранением. Например:
FooController < ApplicationController
def update
params[:page] ||= {}
params[:page][:link_attributes] ||= []
params[:page][:link_attriubtes].each { |h| h[:source_id] ||= '1' }
Page.create(params[:page])
end
end
Необходимо также, вероятно, посмотреть на обратные вызовы, конкретно before_validate (при использовании проверок) before_save, или before_create.
Трудно дать Вам определенный пример того, как использовать их, не зная, как Вы сохраняете данные, но это, вероятно, выглядело бы очень похожим на пример, который дал Gaius.