是否可以在函数中传递 for 循环?
Is it possible to pass a for loop in a function?
我知道这听起来很荒谬,但我必须将 for 循环传递给函数。我有一个包含 75 列以上的数据框,其中大部分是分类变量。其中一个变量称为 SalePrice
,我希望找到分类变量与 SalePrice
.
之间的相关性
这是我的代码,但我认为手动遍历所有 75 列是荒谬的。有没有简单的方法?
df = pd.read_csv(file, delimiter=',')
qualityTest = df[["OverallQual","SalePrice"]]
qualities = [1,2,3,4,5,6,7,8,9,10]
stats.f_oneway(qualityTest['SalePrice'][qualityTest['OverallQual'] == 1],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 2],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 3],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 4],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 5],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 6],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 7],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 8],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 9],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 10])
我试过这样做,但没用
stats.f_oneway(
for i in qualities:
qualityTest['SalePrice'][qualityTest['OverallQual'] == i]
)
您可以使用列表理解 - 本质上,使用 for
循环创建一个列表,并将其传递给:
stats.f_oneway([qualityTest['salePrice'][qualityTest['OverallQual'] == i] for i in qualities])
或者,如果您希望它作为 i
单独的参数 传递,而不是作为 一个包含 i
个元素的列表, 你可以在最外面的一组方括号前面添加一个 *
(这会将你刚刚制作的列表解压缩到函数参数中)。
这里使用groupby
qualityTest.groupby('OverallQual').OverallQual.apply(stats.f_oneway)
我知道这听起来很荒谬,但我必须将 for 循环传递给函数。我有一个包含 75 列以上的数据框,其中大部分是分类变量。其中一个变量称为 SalePrice
,我希望找到分类变量与 SalePrice
.
这是我的代码,但我认为手动遍历所有 75 列是荒谬的。有没有简单的方法?
df = pd.read_csv(file, delimiter=',')
qualityTest = df[["OverallQual","SalePrice"]]
qualities = [1,2,3,4,5,6,7,8,9,10]
stats.f_oneway(qualityTest['SalePrice'][qualityTest['OverallQual'] == 1],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 2],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 3],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 4],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 5],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 6],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 7],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 8],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 9],
qualityTest['SalePrice'][qualityTest['OverallQual'] == 10])
我试过这样做,但没用
stats.f_oneway(
for i in qualities:
qualityTest['SalePrice'][qualityTest['OverallQual'] == i]
)
您可以使用列表理解 - 本质上,使用 for
循环创建一个列表,并将其传递给:
stats.f_oneway([qualityTest['salePrice'][qualityTest['OverallQual'] == i] for i in qualities])
或者,如果您希望它作为 i
单独的参数 传递,而不是作为 一个包含 i
个元素的列表, 你可以在最外面的一组方括号前面添加一个 *
(这会将你刚刚制作的列表解压缩到函数参数中)。
这里使用groupby
qualityTest.groupby('OverallQual').OverallQual.apply(stats.f_oneway)