上下文
大家好,我试图将我的数据集分成180个独特的部分然后通过地理编码器运行(我的n是~180,000,地理编码器有1000个批次限制)。我对Python很陌生,但是一些谷歌搜索让我在shuffle
内sklearn.utils
。它似乎做了诀窍,这里的代码做了我想要的(概念上):
from sklearn.utils import shuffle
df = shuffle(addresses)
df1 = df[0:1000]
df2 = df[1000:2000]
df3 = df[2000:3000]
但是,我显然不想坐下来手动构建180个这样的数据帧,所以我正在寻找一种方法将它放入循环中。这是我的基本想法:
start = 0
end = 1000
for a in range(1,180):
print(start, end, a)
start = start+1000
end = end+1000
以上工作正常。
无效的代码
然而,当我尝试将实际拆分集成到循环中时(不仅仅是打印),它失败了。我非常确定问题在于我在命名数据帧时如何调用宏a
。我不知道如何解决这个问题。
from sklearn.utils import shuffle
df = shuffle(addresses)
start = 0
end = 1000
for a in range(1,180):
df_str(a) = df[start:end]
start = start+1000
end = end+1000
答案 0 :(得分:1)
潜在的解决方法:
df_str = dict()
for a in range(1,180):
df_str[a] = df[start:end]
start += 1000
end += 1000
可能的先前错误:
确保定义df_str。推荐为字典。
您似乎将df_str称为带圆括号的函数,方括号更常用于元素访问。
答案 1 :(得分:0)
您可以尝试使用exec()
函数执行您创建的数据框。这里,“ format()
”方法用于更改数据框的名称。
例如,if a=1
然后{} = data'.format("df_%d" %(a)))
会将数据重命名为df_1
start = 0
end = 1000
df_str = dict()
for a in range(1,180):
df_str[a] = df.iloc[start:end]
data= df_str[a]
exec('{} = data'.format("df_%d" %(a)))
start = start+1000
end = end+1000
del data
如果希望数据帧的索引从0开始,则可以使用reset_index(drop = True)重置索引:
exec('{} = data'.format("df_%d.reset_index(drop=True)" %(a)))