如何向 Pandas DataFrame 添加行

您可以使用df.loc()函数在Pandas DataFrame的末尾添加一行:

#add row to end of DataFrame
df.loc[len(df.index)] = [value1, value2, value3, ...]

您可以使用df.append()函数将现有 DataFrame 的几行附加到另一个 DataFrame 的末尾:

#append rows of df2 to end of existing DataFrame
df = df.append(df2, ignore_index = True)

下面的例子展示了如何在实践中使用这些函数。

示例 1:向 Pandas DataFrame 添加一行

以下代码显示了如何在 Pandas DataFrame 的末尾添加一行:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [10, 12, 12, 14, 13, 18],
                   'rebounds': [7, 7, 8, 13, 7, 4],
                   'assists': [11, 8, 10, 6, 6, 5]})

#view DataFrame
df

	points	rebounds assists
0	10	7	 11
1	12	7	 8
2	12	8	 10
3	14	13	 6
4	13	7	 6
5	18	4	 5

#add new row to end of DataFrame
df.loc[len(df.index)] = [20, 7, 5]

#view updated DataFrame
df

        points	rebounds assists
0	10	7	 11
1	12	7	 8
2	12	8	 10
3	14	13	 6
4	13	7	 6
5	18	4	 5
6	20	7	 5

示例 2:向 Pandas DataFrame 添加几行

以下代码显示了如何将现有 DataFrame 的几行添加到另一个 DataFrame 的末尾:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [10, 12, 12, 14, 13, 18],
                   'rebounds': [7, 7, 8, 13, 7, 4],
                   'assists': [11, 8, 10, 6, 6, 5]})

#view DataFrame
df

	points	rebounds assists
0	10	7	 11
1	12	7	 8
2	12	8	 10
3	14	13	 6
4	13	7	 6
5	18	4	 5

#define second DataFrame
df2 = pd.DataFrame({'points': [21, 25, 26],
                    'rebounds': [7, 7, 13],
                    'assists': [11, 3, 3]})

#add new row to end of DataFrame
df = df.append(df2, ignore_index = True)

#view updated DataFrame
df

        points	rebounds assists
0	10	7	 11
1	12	7	 8
2	12	8	 10
3	14	13	 6
4	13	7	 6
5	18	4	 5
6	21	7	 11
7	25	7	 3
8	26	13	 3

请注意,两个 DataFrame 应该具有相同的列名,以便成功地将一个 DataFrame 的行附加到另一个 DataFrame 的末尾。

### 添加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]。 综上所述,针对不同规模的任务应灵活选用合适的技术手段;而对于追求极致效能的应用,则优先考量预分配空间或者批量化处理策略。
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值