2015-06-16 3 views
0

У меня есть dataframe, который я делаю какую-то работу наPass панды суб dataframe освоить dataframe

d={'x':[2,8,4,-5,4,5,-3,5],'y':[-.12,.35,.3,.15,.4,-.5,.6,.57]} 
df=pd.DataFrame(d) 
df['x_even']=df['x']%2==0 

subdf, получить все строки, где х является отрицательным, а затем квадрат х, а затем многократным 100 к у

subdf=df[df.x<0] 
subdf['x']=subdf.x**2 
subdf['y']=subdf.y*100 

работа субдиффа завершена. Я не уверен, как я могу включить эти изменения в главный фрейм данных (df).

ответ

1

Похоже, ваш текущий код должен дать вам предупреждение SettingWithCopyWarning.

Чтобы избежать этого вы можете сделать следующее:

df.loc[df.x<0, 'y'] = df.loc[df.x<0, 'y']*100 
df.loc[df.x<0, 'x'] = df.loc[df.x<0, 'x']**2 

которые изменят df, не поднимая предупреждение и нет необходимости сливать ничего обратно.

+0

закрыть. Проблема заключается в том, когда я выполняю первую строку, второе значение становится ложным и не оценивает. Как я могу оценить их оба? – NinjaGaiden

+0

Просто измените порядок строк, так что 'x' будет перезаписан в конце. – Primer

0
pd.merge(subdf,df,how='outer') 

Это делает то, о чем я просил. Спасибо за подсказку Primer

Смежные вопросы