Pandas DataFrame是Python数据处理的基石。高效地添加行是一项常见任务,本文详细介绍了向DataFrame追加单行的最佳实践。
目录
使用.loc
高效添加行
.loc
访问器提供了一种最有效和直接的添加行的方法。在处理大型DataFrame时,它尤其具有优势,可以最大限度地减少性能开销。您可以指定新行的索引,并提供数据作为列表或NumPy数组。
import pandas as pd
import numpy as np
# 示例DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
# 新行数据作为列表
new_row_list = [4, 7]
# 使用.loc添加新行
df.loc[len(df)] = new_row_list
print("使用列表:n", df)
# 新行数据作为NumPy数组
new_row_array = np.array([5,8])
# 使用.loc和NumPy数组添加新行
df.loc[len(df)] = new_row_array
print("n使用NumPy数组:n",df)
这种方法直接修改DataFrame的底层结构,使其比其他方法更快。输出显示已追加的新行。
使用字典提高可读性
当处理许多列时,使用字典表示新行可以提高代码的可读性。字典键对应于列名,值是行的值。pd.concat
有效地将现有的DataFrame与新行组合。
import pandas as pd
# 示例DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
# 新行数据作为字典
new_row_dict = {'col1': 5, 'col2': 8}
# 使用pd.concat添加新行
df = pd.concat([df, pd.DataFrame([new_row_dict])], ignore_index=True)
print(df)
ignore_index=True
确保正确的索引处理,防止出现重复索引。
为什么应该避免使用append()
方法
在现代Pandas版本中,append()
方法已被弃用。它效率较低,并可能导致意外行为。.loc
和基于字典的方法在性能和可维护性方面更胜一筹。始终优先选择上面描述的更高效和受支持的方法。