У меня к файлу данных df
в каждой строке У меня есть несколько столбцов Я хочу сделать вычитание, columns_to_sub
, некоторый столбец тегов, называемый «поглощать», и некоторые столбцы, которые я не хочу изменять , Я хочу вычесть значения columns_to_sub
по строке, которая находится на другом фрейме данных и индексируется тегом «absorb». Вот не функциональный пример того, что я хочу:Вычитание строк DataFrame из других строк данных конкретного фрейма
import pandas as pd
import numpy as np
data = np.hstack((np.random.randint(0,10,20).reshape(-1,1),np.random.rand(20,3)))
df = pd.DataFrame(data,columns=['absorb','a','b','c'])
columns_to_sub = ['a','b']
means = df.groupby('absorb')[columns_to_sub].mean()
#This result is not what I want, because the subtraction is strange
df[columns_to_sub] = df[columns_to_sub] - means.loc[df.absorb,columns_to_sub]
Как исправить этот код?
Хороший ответ (+1). Однако верно, что 'df.groupby ('absorb')' неверно. –
@AmiTavory Вы пробовали? Прекрасно работает для меня. Просто используйте имена столбцов при группировке на фреймворке данных. Нет необходимости в 'df.groupby (df.column)'. http://pandas.pydata.org/pandas-docs/stable/groupby.html – Alexander
Любопытно, что вы думаете: у меня это дает разные результаты, когда я меняю две версии. –