Pandas DataFrame添加一行

本文介绍了如何在Python中使用Pandas库的append()函数来添加数据行或合并DataFrame。详细解释了ignore_index参数的作用,当设置为True时,会重新生成索引,避免重复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里采用append()函数。

添加一行

>>> res = pd.DataFrame(columns=('lib', 'qty1', 'qty2'))
>>> res = res.append([{'qty1':10.0}], ignore_index=True)
>>> print(res.head())

   lib  qty1  qty2
0  NaN  10.0   NaN

合并两个DataFrame

这里需要注意的是ignore_index参数。

ignore_index = False

>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))

   A  B
0  1  2
1  3  4
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
>>> df.append(df2)

   A  B
0  1  2
1  3  4
0  5  6
1  7  8

ignore_index = True

>>> df.append(df2, ignore_index=True)

   A  B
0  1  2
1  3  4
2  5  6
3  7  8
### 添加行到 Pandas DataFrame 的最佳实践 在 Pandas 中,向 `DataFrame` 添加新行是一个常见的需求。以下是几种常用方法及其性能比较: #### 方法一:使用 `.append()` 方法 `.append()` 是一种简单直观的方式来添加新行。然而,这种方法会返回一个新的 `DataFrame` 而不会改变原始对象,因此效率较低,尤其是在循环中频繁调用时。 ```python import pandas as pd df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) new_row = pd.Series([5, 6], index=df.columns) df_appended = df.append(new_row, ignore_index=True) print(df_appended) ``` 此方法适合一次性追加少量数据的情况[^1]。 --- #### 方法二:使用 `.loc[]` 属性 通过 `.loc[]` 可以直接定位并插入新行。这种方式不需要创建新的 `DataFrame`,而是直接修改原对象,适用于动态更新场景。 ```python df.loc[len(df)] = [7, 8] print(df) ``` 虽然 `.loc[]` 更高效,但在大规模数据集下仍可能表现不佳[^1]。 --- #### 方法三:先构建列表再转为 DataFrame 当需要批量添加多行时,可以先将数据存储在一个 Python 列表中,待全部收集完毕后再将其转换为 `DataFrame` 并与原有数据合并。这是推荐的做法之一,因为它避免了逐次操作带来的开销。 ```python data_list = [[9, 10], [11, 12]] additional_df = pd.DataFrame(data_list, columns=df.columns) df_concatenated = pd.concat([df, additional_df], ignore_index=True) print(df_concatenated) ``` 这种方法显著提升了性能,尤其对于大数据量的操作效果更佳[^2]。 --- #### 方法四:利用 NumPy 数组加速 如果底层数据结构允许,也可以考虑借助 NumPy 高效数组运算来优化性能。不过需要注意的是,这通常涉及更多复杂度以及额外的数据类型转换工作。 ```python import numpy as np array_data = np.array([[13, 14]]) np_combined = np.vstack((df.to_numpy(), array_data)) final_df = pd.DataFrame(np_combined, columns=df.columns) print(final_df) ``` 尽管如此,在大多数情况下,单纯依靠 Pandas 自带工具即可满足需求[^4]。 综上所述,针对不同规模的任务应灵活选用合适的技术手段;而对于追求极致效能的应用,则优先考量预分配空间或者批量化处理策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值