循环浏览数据帧列表并另存为新的数据帧名称



我正试图循环浏览数据帧列表并对它们执行操作。在最后一个命令中,我想将数据帧重命名为原始密钥加'_rand_test'。我得到错误:

SyntaxError: cannot assign to operator

有办法做到这一点吗?

segments = [main_h, main_m, main_l]
seg_name = ['main_h', 'main_m', 'main_l']
for i in segments:
control = pd.DataFrame(i.groupby('State', group_keys=False).apply(lambda x : x.sample(frac = .1)))
control['segment'] = 'control'
test= i[~i.index.isin(control.index)]
test['segment'] = 'test'
seg_name[i]+'_rand_test' = pd.concat([control,test])

错误是因为您试图在=符号的左侧执行加法,而这是永远无法做到的。如果您想重命名数据帧,可以在下一行执行。我不确定你到底想根据代码重命名什么,但如果它只是seg_name列表中的相应字符串,那么下一行会是这样的:

seg_name[segments.index(i)] += 'rand_test'

产生segments.index(i(的原因是,您正在对段中的元素进行循环,而不是对它们的索引进行循环,因此您需要获取元素的索引。

也许这对你有用?在运行循环之前创建一个空列表,并使用append函数填充该列表。然后重命名新列表中的所有元素。

segments = [main_h, main_m, main_l]
seg_name = ['main_h', 'main_m', 'main_l']
new_list= []
for i in segments:
control = pd.DataFrame(i.groupby('State', group_keys=False).apply(lambda x : x.sample(frac = .1)))
control['segment'] = 'control'
test= i[~i.index.isin(control.index)]
test['segment'] = 'test'
new_list.append(df)
new_names_list=[item +'_rand_test' for item in new_list]

最新更新