【发布时间】:2021-09-03 21:25:12
【问题描述】:
我正在尝试了解如何在 for 循环中正确迭代具有略微不同属性(如列名)的不同数据帧。
我特别想做的是在每个数据集上训练一个机器学习模型,并将另一个用作测试集。
假设我有两个数据框df1、df2:我最初所做的是将它们附加到一个列表中:
my_list = [df1, df2]
但是我不确定如何正确迭代这些对象,因为它们具有不同的属性。例如,我想依次排除“目标”列变量,但正如我所说,它在df1, df2 中的调用方式不同。鉴于此,例如名称分别为“target1”和“target2”,我想要做的是:
for df in my_list:
if 'target1' in df.columns:
X = df.drop('target1', axis=1)
model.fit(X,target1)
...
但我不确定这是正确的方式..
编辑:好的,这些是df1.head(), df2.head() 的输出(我只是在这里做一个例子,因为原始数据是机密的)。
我正在处理一个化学数据集,正如您所见,它们非常相似,除了一些名称不同的列(温度和目标)。
df1.head()
Temperature feat_1 feat_2 feat_3 target1
300 2.4 1.2 2.4 1.5
298 3.2 1.5 5.7 3.4
300 2.4 1.2 2.4 1.5
298 1.6 1.5 3.2 3.4
298 3.2 1.5 2.4 1.4
df2.head()
Temp feat_1 feat_2 feat_3 target2
298 3.4 1.2 3.4 2.5
298 6.2 1.5 4.7 3.4
300 2.4 3.3 2.4 4.5
298 4.6 2.5 9.2 3.4
298 3.2 1.5 5.4 6.4
因此,对于这两个数据集中的每一个,我希望依次在整个数据集上训练模型并在另一个上进行测试,反之亦然,一切都在 for 循环中完成。
【问题讨论】:
-
您能否用
df1.head(5)和df2.head(5)的输出以及预期的结果更新您的帖子? -
我已经更新了帖子的更多详细信息,如果您需要任何其他信息,请告诉我,非常感谢您的帮助。