在循环添加数据帧时遇到一些问题:
我有一个具有以下结构的数据框:
df
A B C
1 2 3
4 5 6
7 8 9
然后我写一个代码:
alpha=[0.10,0.05,0.01]
beta=[0.10]
error_est=[0.10,0.20,0.25]
然后,我在alpha,beta and error_est
上遍历df
的每个组合,以创建9
个不同的df
,然后像这样将它们附加在一起:
import numpy as np
import pandas as pd
import scipy.stats as st
from itertools import product
app_dicti={}
appended_data=[]
for a, b, error in product(alpha,beta,error_est):
z_sum=(st.norm.ppf(1-(a/2))+st.norm.ppf(1-b))**2
req_samp_size_knw=round(z_sum*((1/error)**2),0)
t_1_minus_alpha_by_2=st.t.ppf(1-(a/2),req_samp_size_knw)
t_1_minus_beta=st.t.ppf(1-b,req_samp_size_knw)
t_sum=(t_1_minus_alpha_by_2+t_1_minus_beta)**2
req_samp_size=round(t_sum*((1/error)**2),0)
df['sample_statistics']="alpha="+str(a)+"_"+"beta="+str(b)+"_"+"moe="+str(error)
df['required_sample_size']=req_samp_size
app_dicti["alpha="+str(a)+"_"+"beta="+str(b)+"_"+"moe="+str(error)]=df
for table_name,table in app_dicti.items():
# store DataFrame in list
appended_data.append(table)
# see pd.concat documentation for more info
df_final = pd.concat(appended_data)
但是当我检查我的最终字典app_dicti
时,它具有所有正确的键,但是每个键都具有相同的值,该值是循环的最后一个值。
答案 0 :(得分:0)
此代码将表中的所有行设置为相同的值:
df['sample_statistics']="alpha="+str(a)+"_"+"beta="+str(b)+"_"+"moe="+str(error)
df['required_sample_size']=req_samp_size