gpt4 book ai didi

python - 有效地指定具有相同前缀的多个列名称

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:04 28 4
gpt4 key购买 nike

我正在对公司层面的观察进行回归。我想控制公司类型 [它生产什么]。我在一个对象变量中有这些信息,我将其转换为分类变量,然后从中取出假人。

df['Product Type'] = df['Product Type'].astype('category')
df = pd.get_dummies(df, columns=['Product Type']).head()

我的样本很大,最终得到了很多虚拟变量。将它们一个一个地引入到我的模型中是相当多的工作(可能有 10-15 个)。

reg = sm.OLS(endog=df['Y'], exog= df[['X1', 'Number of workers', 'X2', "Product Type_Jewellery", "Product_Type_Apparel", (all the other product dummies) ]], missing='drop')

有没有更有效的方法来做到这一点?在 stata 中,我使用了前缀 i.Product_Type,它会向软件发出信号,表明 String 变量必须被视为一个分类变量……有什么类似的吗?

最佳答案

使用 str.contains 查找包含“Product_*”的列,访问它们变得很容易。

c = df.columns[df.columns.str.contains('Product')]

如果不需要正则表达式,你可以将c初始化为

c = df.columns[df.columns.str.contains('Product', regex=False)]

或者,使用 str.startswith:

c = df.columns[df.columns.str.startswith('Product')]

或者,列表理解:

c = [c_ for c_ in df if c_.startswith('Product')]

最后,通过解包c访问子集:

subset = df[['X1', 'Number of workers', 'X2', *c]]
reg = sm.OLS(endog=df['Y'], exog=subset, missing='drop')

关于python - 有效地指定具有相同前缀的多个列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54175265/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com