python - 通过将元素设置为变量来迭代列表
问题描述
我想使用for
循环创建 12 个标有月份名称的数据框。所以我创建了一个包含月份名称的列表list_month
。但我无法i
像df_[i]
在for
循环中那样插入变量。
我正在尝试做的操作是为列表中包含的每个月创建一个新的数据df_new_month
框df_new_feb = df_feb[df_feb['my_feature'] > 20]
:
我应该采用不同的方法吗?
list_month = ['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec']
for i in list_month:
df_new_[i] = df_[i][df_[i]['my_feature'] > 20]
print(i, list_month[i])
我得到的错误是:
Traceback (most recent call
last):File"/Users/annalisa/anaconda3/lib/python3.7/site_
packages/IPython/core/interactiveshell.py", line 3325, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-50-c09b1f63eb51>", line 3, in <module>
df_new_[i] = df_[i][df_[i]['my_feature'] > 20]
NameError: name 'df_' is not defined
解决方案
鉴于我对您的理解正确,这相当骇人听闻,但应该可以工作:
list_month = ['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec']
for i in list_month:
exec("df_new_{month} = df_{month}[df_{month}['my_feature'] > 20]".format(month=i))
基本上它会创建一个字符串,看起来就像您在脚本中键入它并执行它一样。
但也许你应该重新考虑,而是将数据放入同一个 DataFrame 中
df_feb['new'] = ...
推荐阅读
- reactjs - KotlinJS react-hook-form 库,注册元素
- javascript - 两个日期之间的 vuejs 样式绑定
- sql - SQL连接两个表,只选择一个ID
- spring - 具有多表的 UserDetailsService
- java - 在 Eclipse IDE 中调试为 Testng 不起作用
- python-3.x - 如果响应有错误,则尝试更新 urllib 库请求中的 url
- javascript - 强制网络用 d3 拟合边界框
- docker - Elsa + docker 奇怪的 JavaScript 错误
- windows - 你如何在使用 Ansible 的本地策略部分中使用 win_security_policy 模块?
- pathos - 不能在 pathos apipe() 结果上调用 get() 会导致内存使用过多吗?