pandas: добавление строки к фрейму данных со значениями, полученными с использованием пользовательской формулы, примененной к выбранным столбцам

#pandas

#pandas

Вопрос:

У меня есть фрейм данных в виде

 df = pd.DataFrame(np.random.randn(5,4),columns=list('ABCD')) 
  

Я могу использовать следующее для выполнения традиционных вычислений, таких как mean() , sum() и т.д.

 df.loc['calc'] = df[['A','D']].iloc[2:4].mean(axis=0)
  

Теперь у меня есть два вопроса

  1. Как я могу apply создать формулу (например, exp(mean()) или 2.5*mean()/sqrt(max()) к столбцам ‘A’ и ‘D’ для строк 2-4
  2. Как я могу добавить строку к существующей, df где два значения были бы mean() из A и D , а два значения были бы результатом конкретной формулы C и B .

Комментарии:

1. лучше покажите нам, каков ваш ожидаемый результат

Ответ №1:

Вопрос 1:

Вы можете использовать функции .apply() и lambda .

 df.iloc[2:4,[0,3]].apply(lambda x: np.exp(np.mean(x)))
df.iloc[2:4,[0,3]].apply(lambda x: 2.5*np.mean(x)/np.sqrt(max(x)))
  

Вопрос 2:

Вы можете использовать словари, объединить их и добавить в виде строки. Первый — это среднее значение, второй — это какая-то пользовательская функция.

 ad = dict(df[['A', 'D']].mean())
bc = dict(df[['B', 'C']].apply(lambda x: x.sum()*45))
  

Объедините их:

 ad.update(bc)

df = df.append(ad, ignore_index=True)
  

Комментарии:

1. то, что вы предложили, возможно ли сделать то же самое в Spark 1.6.3

2. Я полагаю, вы могли бы