#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)
Теперь у меня есть два вопроса
- Как я могу
apply
создать формулу (например,exp(mean())
или2.5*mean()/sqrt(max())
к столбцам ‘A’ и ‘D’ для строк 2-4 - Как я могу добавить строку к существующей,
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. Я полагаю, вы могли бы