Pandas,使用for循环构建新数据框

4 投票
1 回答
5179 浏览
提问于 2025-04-17 23:16

我遇到了一个很简单的问题,但在Pandas中解决不了。
我有一个数据框(dataframe),我想在这个数据框上应用一些函数。然后我想重复这个操作很多次,把每次操作的结果放到一个新的更大的数据框里。我在考虑用一个循环来实现这个。下面是一个我无法让它正常工作的简化示例:

import pandas as pd

df = pd.DataFrame(np.random.randn(3, 4), columns=list('ABCD'))

large_df = df*0

for i in range(1,10):
    df_new = df*i
    large_df= pd.concat(large_df,df_new)

large_df

有什么想法吗??

1 个回答

5

最好是先把所有的结果都生成出来,然后最后一次性把它们合并在一起。如果你每次只添加一个结果,内存就得每次重新分配,这样会比较慢。

所以,如果你在循环中用不同的参数 p 来调用 some_function(就像你上面例子中的 i),我建议你这样做:

pd.concat([df.apply(lambda x: some_function(x, p)) for p in parameters])

撰写回答