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,数据帧中索引长度的整数
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)