For循环复制和编辑dataframe



我想在一个循环中创建24个数据帧,其中第一个数据帧由以下方式创建:

df_hour_0 = df_dummies.copy()
df_hour_0['Price_24_1'] = df_hour_0['Price_REG1']
df_hour_0['Price_24_2'] = df_hour_0['Price_REG2']
df_hour_0['Price_24_3'] = df_hour_0['Price_REG3']
df_hour_0['Price_24_4'] = df_hour_0['Price_REG4']
df_hour_0[['Price_24_1', 'Price_24_2', 'Price_24_3', 'Price_24_4'
]] = df_hour_0[['Price_24_1', 'Price_24_2', 'Price_24_3', 'Price_24_4']].shift(1)

首先,我尝试了这个方法,它不起作用。(也许这种方法的另一个版本可以工作?)。


for i in range(24):
df_hour_i = df_dummies.copy()
df_hour_i['Price_24_1'] = df_hour_i['Price_REG1']
df_hour_i['Price_24_2'] = df_hour_i['Price_REG2']
df_hour_i['Price_24_3'] = df_hour_i['Price_REG3']
df_hour_i['Price_24_4'] = df_hour_i['Price_REG4']
df_hour_i[['Price_24_1', 'Price_24_2', 'Price_24_3', 'Price_24_4']] = df_hour_0[['Price_24_1', 'Price_24_2', 'Price_24_3', 'Price_24_4']].shift(i+1)

现在我读到人们通常建议使用字典,所以我尝试了这个:

d = {}
for x in range(23):
d[x] = pd.DataFrame()

它在一个字典中给了我24个空DF,但现在我正在为如何填充它们而挣扎。

像这样创建一个dataframe列表:

cols =  ['Price_24_1', 'Price_24_2', 'Price_24_3', 'Price_24_4']
dfs = []
for i in range(24):
df = df_hour_0.copy()
df[cols] = df[cols].shift(i)
dfs.append(df)

移位i将在索引i处。

最新更新