簡體   English   中英

如何使用Pandas從循環向數據框追加行?

[英]How does one append rows to a dataframe from a loop using Pandas?

我正在運行一個循環,將值附加到循環的空數據框外。 但是,完成此操作后,數據幀仍為空。 我不確定發生了什么。 目標是找到導致殘差平方和最小的功率值。

示例代碼如下:

import tweedie

power_list = np.arange(1.3, 2, .01)
mean = 353.77
std = 17298.24
size = 860310
x = tweedie.tweedie(mu = mean, p = 1.5, phi = 50).rvs(len(x))
variance = 299228898.89

sum_ssr_df = pd.DataFrame(columns = ['power', 'dispersion', 'ssr'])

for i in power_list:

    power = i

    phi = variance/(mean**power)

    tvs = tweedie.tweedie(mu = mean, p = power, phi = phi).rvs(len(x))

    sort_tvs = np.sort(tvs)

    df = pd.DataFrame([x, sort_tvs]).transpose()
    df.columns = ['actual', 'random']
    df['residual'] = df['actual'] - df['random']
    ssr = df['residual']**2
    sum_ssr = np.sum(ssr)
    df_i = pd.DataFrame([i, phi, sum_ssr])
    df_i = df_i.transpose()
    df_i.columns = ['power', 'dispersion', 'ssr']
    sum_ssr_df.append(df_i)    

sum_ssr_df[sum_ssr_df['ssr'] == sum_ssr_df['ssr'].min()]

我究竟做錯了什么?

這段代碼的效率不如ALollz所說的那么高效。 當你追加時,它基本上會在內存中創建一個新的數據幀(我在這里過於簡化了)。

您的代碼中的錯誤是:

 sum_ssr_df.append(df_i)

應該:

 sum_ssr_df = sum_ssr_df.append(df_i)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM