Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧拆分为N个片段_Python_For Loop_Dataframe_Macros_Scikit Learn - Fatal编程技术网

Python 将数据帧拆分为N个片段

Python 将数据帧拆分为N个片段,python,for-loop,dataframe,macros,scikit-learn,Python,For Loop,Dataframe,Macros,Scikit Learn,上下文 大家好,我正在尝试将我的数据集分割成180个独特的片段,然后通过地理编码器运行它(我的n约为180000,地理编码器有1000个批次限制)。我对Python非常陌生,但一些谷歌搜索让我在sklearn.utils中找到了shuffle。它似乎做到了这一点,这里的代码实现了我想要的(概念上): 然而,我显然不想坐下来像这样手动构建180个数据帧,所以我正在寻找一种方法将其放入循环中。这是我的基本想法: start = 0 end = 1000 for a in range(1,180):

上下文

大家好,我正在尝试将我的数据集分割成180个独特的片段,然后通过地理编码器运行它(我的n约为180000,地理编码器有1000个批次限制)。我对Python非常陌生,但一些谷歌搜索让我在
sklearn.utils
中找到了
shuffle
。它似乎做到了这一点,这里的代码实现了我想要的(概念上):

然而,我显然不想坐下来像这样手动构建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
潜在修复:

df_str = dict()
for a in range(1,180):
    df_str[a] = df[start:end]
    start += 1000
    end += 1000
以前可能出现的错误:

  • 确保您定义了df_str。建议将其作为字典

  • 似乎您将df_str作为带有圆括号的函数调用,而方括号更常用于元素访问

潜在修复:

df_str = dict()
for a in range(1,180):
    df_str[a] = df[start:end]
    start += 1000
    end += 1000
以前可能出现的错误:

  • 确保您定义了df_str。建议将其作为字典

  • 似乎您将df_str作为带有圆括号的函数调用,而方括号更常用于元素访问


您可以尝试使用
exec()
函数来执行您创建的数据帧。这里,使用“
format()
”方法更改数据帧的名称。 例如,
如果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()
函数来执行您创建的数据帧。这里,使用“
format()
”方法更改数据帧的名称。 例如,
如果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)重置索引:


谢谢你的评论。不幸的是,这并没有解决我的问题。我的理解是,我正在定义df;我只想在字符串值df_2;上添加一个后缀,它接受整数
a
的字符串值。这就是我现在拥有的:
start=0
end=1000
对于范围(1180)内的a:
b=str(a)
print(b)
df_b]=df[start:end]
start=start+1000
end=end+1000
但它返回
TypeError:“str”对象不支持项分配
您最近的错误是因为您将df_uuu定义为字符串,并且字符串在python中不可更改。您可能希望像词典一样探索结构。然后您可以将第i个子数据帧存储为第i个条目。再次感谢您的评论。但它仍然没有解决我的问题。循环之后字典是空的。此外,我不认为将此代码与我的其他代码相匹配是可能的。我真的需要它们在数据帧中。你知道怎么做吗?可能是你感兴趣的。谢谢。我会更仔细地调查这件事。《你链接的帖子》建议,只有在我完全知道自己在做什么的情况下,我才会做我想做的事情;我当然不知道,但在我真正解决问题之前,我要花多少时间才能到达那个地方,这是一个权衡。非常有用,谢谢你的评论。不幸的是,这并没有解决我的问题。我的理解是,我正在定义df;我只想在字符串值df_2;上添加一个后缀,它接受整数
a
的字符串值。这就是我现在拥有的:
start=0
end=1000
对于范围(1180)内的a:
b=str(a)
print(b)
df_b]=df[start:end]
start=start+1000
end=end+1000
但它返回
TypeError:“str”对象不支持项分配
您最近的错误是因为您将df_uuu定义为字符串,并且字符串在python中不可更改。您可能希望像词典一样探索结构。然后您可以将第i个子数据帧存储为第i个条目。再次感谢您的评论。但它仍然没有解决我的问题。循环之后字典是空的。此外,我不认为将此代码与我的其他代码相匹配是可能的。我真的需要它们在数据帧中。你知道怎么做吗?可能是你感兴趣的。谢谢。我会更仔细地调查这件事。《你链接的帖子》建议,只有在我完全知道自己在做什么的情况下,我才会做我想做的事情;我当然不知道,但在我真正解决问题之前,我要花多少时间才能到达那个地方,这是一个权衡。但是非常有用--值得赞赏的是,对代码的解释将有助于提高文章的质量。如果可能的话,请添加评论或解释。对代码的解释将有助于提高您文章的质量。如果可能,请添加评论或解释。