小能豆

将列表或系列作为一行附加到 pandas DataFrame 中?

javascript

因此,我初始化了一个空的 pandas DataFrame,并且我想迭代地将列表(或 Series)作为行附加到此 DataFrame 中。最好的方法是什么?


阅读 43

收藏
2024-10-11

共1个答案

小能豆

使用或类似操作迭代地将行附加到 pandas DataFrameappend()可能效率低下,尤其是在循环中,因为每次附加新行时,都会在内部创建一个新的 DataFrame。这可能会导致严重的性能损失。

建议的方法是先收集列表中的行,然后在最后创建一次 DataFrame。具体操作如下:

有效方法

  1. 收集列表或系列列表中的行。
  2. 用于pd.DataFrame()创建最终的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 更好。

2024-10-11