Мне интересно найти сумму значений в столбце, создающем новый столбец в процессе на подмножестве кадра данных, удовлетворяющего некоторому условию.Я не уверен, как работать с суммой нового столбца из этих двух, так как я получаю сообщение об ошибке при попытке получить доступ к Новому столбцу , созданному в процессе:
import pandas as pd
d1={'X':[1,10,100,1000,1,10,100,1000,1,10,100,1000],
'Y':[0.2,0.5,0.4,1.2,0.1,0.25,0.2,0.6,0.05,0.125,0.1,0.3],
'RUN':[1,1,1,1,2,2,2,2,3,3,3,3]
}
df=pd.DataFrame(d1)
for RUNno in (df.RUN.unique()):
df1=df.RUN==RUNno #Selects the rows matching RUNno
df[df1]['NewColumn']=df[df1]['X']+df[df1]['Y'] #For the selected dataset, calculates the sum of two columns and creates a new column
print(df[df1].NewColumn) #Print the contents of the new column
Я не могу получить содержимое df [df1] .NewColumn, так как не могу определить ключ NewColumn.Я почти уверен, что этот способ создания новых столбцов работает на стандартном фрейме данных df, но не уверен, почему он не работает на df [df1].Например.
df['NewColumn']=df['X']+df['Y']
df.NewColumn
Будет работать без проблем.
Чтобы обновить вопрос, записи данных столбцов, которые добавляются для формирования нового столбца, взяты из двух разных фреймов данных.
import pandas as pd
from scipy.interpolate import interp1d
interpolating_functions=dict()
d1={'X':[1,10,100,1000,1,10,100,1000,1,10,100,1000],
'Y':[0.2,0.5,0.4,1.2,0.1,0.25,0.2,0.6,0.05,0.125,0.1,0.3],
'RUN':[1,1,1,1,2,2,2,2,3,3,3,3] }
d2={'X':[1,10,100,1000,1,10,100,1000,1,10,100,1000],
'Y':[0.2,0.5,0.4,1.2,0.1,0.25,0.2,0.6,0.05,0.125,0.1,0.3],
'RUN':[1,1,1,1,2,2,2,2,3,3,3,3] }
df=pd.DataFrame(d1)
df2=pd.DataFrame(d2)
for RUNno in (df.RUN.unique()):
df1=df.RUN==RUNno
df3=df.RUN==RUNno
interpolating_functions[RUNno]=interp1d(df2[df3].X,df2[df3].Y)
df[df1]['NewColumn']=df[df1]['X']+interpolating_functions[RUNno](df2[df3]['X'])
print(df[df1].NewColumn)