如何在合并时间序列数据集中选取全年份GDP及GDP Growth自变量?
问题描述
合并涵盖2014-2022年的三个数据集后,得到近30列数据,包含逐年的Internet Penetration Rate、GDP和GDP Growth三类指标。需要选取所有年份的GDP和GDP Growth作为自变量,Internet Penetration Rate作为因变量,在VSCode的Jupyter Notebooks中操作。
初始代码框架如下:
X = df_merged.iloc[:, ].values # independent variables: GDP and GDP Growth % y = df_merged.iloc[:, ].values # dependent variable: Internet Penetration Rate
尝试以下代码筛选自变量时,仅获取到2014年的GDP和GDP Growth数据,请问如何获取全年份的对应列?
gdp_col = [col for col in df_merged.columns if col.startswith("GDP ")][0] gdp_growth_col = [col for col in df_merged.columns if col.startswith("GDP Growth ")][0] X_columns = [gdp_col, gdp_growth_col] X = df_merged.loc[:, X_columns]
解决方案
问题出在代码中的[0]:它只取了列表推导式返回结果的第一个元素(也就是2014年对应的列),因此仅得到单年份数据。要获取所有年份的目标列,只需去掉[0],保留完整的列列表即可。
修改后的代码如下:
# 获取所有年份的GDP列 gdp_cols = [col for col in df_merged.columns if col.startswith("GDP ")] # 获取所有年份的GDP Growth列 gdp_growth_cols = [col for col in df_merged.columns if col.startswith("GDP Growth ")] # 合并两类自变量列 X_columns = gdp_cols + gdp_growth_cols # 提取自变量X(如需转为numpy数组可加.values) X = df_merged.loc[:, X_columns] # 提取因变量y(所有年份的Internet Penetration Rate列) y = df_merged.loc[:, [col for col in df_merged.columns if "Internet Penetration Rate" in col]]
代码说明
- 去掉
[0]后,列表推导式会返回所有符合前缀条件的列,覆盖2014-2022年的全部目标指标; - 用
+合并GDP和GDP Growth的列列表,得到完整的自变量列集合; - 因变量
y的提取逻辑类似,通过列名包含关键字的方式筛选所有年份的Internet Penetration Rate列。
内容的提问来源于stack exchange,提问作者Sinestro101
相关产品推荐
相关产品推荐

