[英]Add a new column to pandas dataframe with coverted values from another column?
[英]Add new column to Pandas Dataframe from functions' output
我寫了函數來估計簡單線性回歸的參數。 該功能產生多個輸出。 功能輸入是兩個列表 。 此外,我有從我導出兩個列表的地方的初始DataFrame df。
我想將函數中的一些輸出作為新列添加到初始DataFrame中,或者在函數外部添加新列表。
例如:
def predict(X,Y):
beta1 = sum([(X[i] - mean_X)*(Y[i] - mean_Y) for i in range(len(X))]) / sum([(X[i] - mean_X)**2 for i in range(len(X))])
beta0 = mean_Y - beta1 * mean_X
y_hat = [beta0 + beta1*X[i] for i in range(len(X))]
return df.assign(prediction = y_hat)
這里,mean_X和mean_Y分別是列表X和列表Y的樣本平均值。
我還嘗試了numpy.insert()將y_hat添加到非初始DataFrame中,但添加到X中,我將其轉換為numpy數組。
我沒有成功達到預期的效果,所以有人可以幫助我嗎?
據我所知,你想在現有/新專欄中使用你的功能。 如果是這種情況,這是一種方法。 如果沒有,那么讓我知道,我會刪除答案。 謝謝
import pandas as pd
def Somefunction(x, y):
a = 2 *x
b = 3 * y
return pd.Series([a, b], index= ['YourColumn1', 'YourColumn2'])
df = pd.read_csv('YourFile')
df = df.join(df.apply(lambda x:
Somefunction(x['ColumnYouWantToApplyFunctionReturnValue a'],
x['ColumnYouWantToApplyFunctionReturnValue B']), axis=1))
你的代碼似乎不太清楚。 mean_X
和mean_Y
變量是什么?
編輯:添加變量聲明。
無論如何,這是一個簡單的建議:
import numpy as np
def predict(X, Y, df):
mean_X = np.mean(X)
mean_Y = np.mean(Y)
beta1 = sum([(X[i] - mean_X)*(Y[i] - mean_Y) for i in range(len(X))]) / sum([(X[i] - mean_X)**2 for i in range(len(X))])
beta0 = mean_Y - beta1 * mean_X
y_hat = [beta0 + beta1*X[i] for i in range(len(X))]
df['prediction'] = y_hat
return df
一種更聰明的方法是使用在DataFrame上調用的apply()函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.