我有一个包含多列的熊猫数据框。可以循环大量列名。所以我制作了一个列名数组,如下所示:
ycols = ['{}_{}d pred'.format(ticker, i) for i in range(hm_days)]
现在我想创建一个新的 Pandas 数据框,其中只有这些列具有父数据框的索引。这该怎么做?
好的,所以您想创建一个具有新列名的新数据帧,以及原始数据帧的现有索引。
对于一些数据框:
old_df = pd.DataFrame({'x':[0,1,2,3],'y':[10,9,8,7]})
>>>
x y
0 0 10
1 1 9
2 2 8
3 3 7
columns = list(old_df)
>>>
['x', 'y']
您可以通过执行以下操作来指定新列:
y_cols = ['x_pred','y_pred']
>>> ['x_pred','y_pred']
这y_cols
是您的新列名称的列表。在您的代码中,您将用ycols = ['{}_{}d pred'.format(ticker, i) for i in range(hm_days)]
.
要获取新列,请使用占位符变量创建新列(在本例中0
,看起来您使用的是数字数据),并使用与旧数据框相同的索引:
# Iterate over all columns names in y_cols
for i in y_cols:
old_df[i]=0
>>> old_df:
x y x_pred y_pred
0 0 10 0 0
1 1 9 0 0
2 2 8 0 0
3 3 7 0 0
最后,切片您的数据帧以获得具有新列名的新数据帧,维护旧数据帧的索引。
df_new = old_df[y_cols]
>>>
x_pred y_pred
0 0 0
1 0 0
2 0 0
3 0 0
即使您有一个命名的,这也有效index
:
x y x_pred y_pred
Date
0 0 10 0 0
1 1 9 0 0
2 2 8 0 0
3 3 7 0 0
df_new = old_df[y_cols]
x_pred y_pred
Date
0 0 0
1 0 0
2 0 0
3 0 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句