因此,我初始化了一个空的 pandas DataFrame,并且我想迭代地将列表(或 Series)作为行附加到此 DataFrame 中。最好的方法是什么?
使用或类似操作迭代地将行附加到 pandas DataFrameappend()可能效率低下,尤其是在循环中,因为每次附加新行时,都会在内部创建一个新的 DataFrame。这可能会导致严重的性能损失。
append()
建议的方法是先收集列表中的行,然后在最后创建一次 DataFrame。具体操作如下:
pd.DataFrame()
以下是一个例子:
import pandas as pd # Initialize an empty list to collect rows rows = [] # Example of iteratively appending rows (as lists or pd.Series) for i in range(5): row = [i, i * 2, i * 3] # Example list rows.append(row) # Convert the list of rows to a DataFrame at once df = pd.DataFrame(rows, columns=['A', 'B', 'C']) print(df)
pd.concat()
您还可以使用pd.concat()DataFrames 列表,这比直接附加到 DataFrame 更有效:
import pandas as pd # Initialize an empty list to collect DataFrames df_list = [] # Iteratively create DataFrames and collect them in a list for i in range(5): row = pd.Series([i, i * 2, i * 3], index=['A', 'B', 'C']) # Example Series df_list.append(row.to_frame().T) # Concatenate all DataFrames at once df = pd.concat(df_list, ignore_index=True) print(df)
这两种方法的性能都比在循环内直接将行附加到 DataFrame 更好。