Python 没有循环的分配?

Python 没有循环的分配?,python,pandas,Python,Pandas,我有: NewData,要从中填充的pd.DataFrame SourceData,包含源数据和 source,一个数据帧,其中包含要为其分配SourceData中的dataframe的索引值 indexlen,数据帧中索引长度的整数 (使用数据帧,因为索引对齐非常关键。) 例如,假设SourceData中有1000个df,indexlen是10000。在10000时,我将把SourceData中的所有列分配给NewData,将索引向上移动(因为所有df共享相同的索引),直到source递减

我有:

  • NewData,要从中填充的pd.DataFrame
  • SourceData,包含源数据和
  • source,一个数据帧,其中包含要为其分配SourceData中的dataframe的索引值
  • indexlen,数据帧中索引长度的整数
(使用数据帧,因为索引对齐非常关键。)

例如,假设SourceData中有1000个df,indexlen是10000。在10000时,我将把SourceData中的所有列分配给NewData,将索引向上移动(因为所有df共享相同的索引),直到source递减,此时我将开始将SourceData[999]中dataframe中所有列的值分配给NewData,等等

我目前正在使用循环执行此操作:

for j in range(1, indexlen + 1):
    NewData[j] = SourceData[source[j]].ix[j,:]
我想在不使用循环的情况下执行此操作,但我不知道如何广播此操作。我肯定我错过了一些明显的东西,但任何帮助都将不胜感激。谢谢大家!

编辑: 我制作了一个源代码列表,因为我认为按元素访问更有效

在回答有关数据帧的问题时,它们是标准价格数据:

>>>SourceData[1].head()

bpz1975     Open    High    Low     Close   Vol     OI
1975-02-13  2.275   2.275   2.275   2.275   0   50
1975-02-14  2.275   2.275   2.275   2.275   0   50
1975-02-18  2.275   2.275   2.275   2.275   0   50
1975-02-19  2.290   2.290   2.290   2.290   0   50
1975-02-20  2.290   2.290   2.290   2.290   0   50

在本例中,读取期货合约的所有月份,然后应用滚动逻辑创建一个系列

创建数据帧并填充它通常不是最快或最随意的方式

在这种情况下,您可以执行以下操作:

如果您需要在SourceData中的DataFrames中包含源、索引信息,那么我会在执行concat之前执行此操作


现在还不清楚这到底意味着什么,但听起来像是你建议根据源设置每个帧的索引。。。您可以创建一个传递SourceData的函数,通过SourceData更改每个数据帧的索引(没有看到source,不清楚具体是什么)。是否有一些关于数据帧外观的示例?使用其中一个dfs的head()编辑问题。此外,索引可能大于10000,因此如果我不高效地执行此操作,内存可能也是一个问题。(正如我想你们可以告诉我的,我的问题和这个具体问题一样,都是关于良好的编程实践的,所以欢迎任何批评。谢谢!)我还尝试了将NewData作为一个列表。快得多。如果没有更好的方法,我认为这个解决方案是可以接受的。
pd.concat(SourceData)