Pandas,使用for循环构建新数据框
我遇到了一个很简单的问题,但在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])