我想通过使用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])
答案 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])