创建并填充一个空的 Pandas DataFrame
从概念上讲,人们可能希望首先创建一个空的 DataFrame,然后逐步用值填充它。然而,这种方法效率低下,并且容易导致性能问题。
按行增长 DataFrame 的陷阱
迭代地将行追加到空 DataFrame 的计算成本很高。由于需要动态内存分配和重新分配,它会导致二次复杂度操作。这可能会严重影响性能,尤其是在处理大型数据集时。
另一种方法:在列表中累积数据
它不是按行增长 DataFrame,而是建议将数据累积在列表中。这有几个优点:
从列表创建 DataFrame
一旦列表中积累了数据,就可以通过使用 pd 转换列表来轻松创建 DataFrame .DataFrame()。这可确保正确的数据类型推断并自动为 DataFrame 设置 RangeIndex。
示例
考虑问题中描述的场景。以下代码演示了如何在列表中累积数据,然后创建 DataFrame:
import pandas as pd data = [] dates = [pd.to_datetime(f"2023-08-{day}") for day in range(10, 0, -1)] valdict = {'A': [], 'B': [], 'C': []} # Initialize symbol value lists for date in dates: for symbol in valdict: if date == dates[0]: valdict[symbol].append(0) else: valdict[symbol].append(1 + valdict[symbol][-1]) # Create a DataFrame from the accumulated data df = pd.DataFrame(valdict, index=dates)
这种方法可确保高效的数据累积和无缝的 DataFrame 创建,而无需任何性能开销或对对象列的担忧。
以上是为什么逐行填充 Pandas DataFrame 效率低下,什么是更好的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!