通过将元素设置为变量来遍历列表

时间:2020-02-17 12:55:44

标签: python pandas list for-loop

我想通过使用tf.compat.v2.nn.sparse_softmax_cross_entropy_with_logits循环来创建12个标有月份名称的数据帧。因此,我创建了一个列表,其中包含月份名称for。但是我无法在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])

2 个答案:

答案 0 :(得分:2)

这是 hackish ,但鉴于我对您的理解正确,应该可以使用:

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'] = ...

答案 1 :(得分:-3)

我认为您必须首先定义变量(df_),然后再进行for循环。
例如至少:

df_ = 0 
list_month = ['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec']
for i in list_month:
    df_[i] = df_[i][df_[i]['my_feature'] > 20]
    print(i, list_month[i])