pandas向 DataFrame 中添加行
在数据处理和分析中,经常需要对数据集进行修改或扩展,特别是在处理表格数据时。Pandas 是 Python 中一个强大的数据处理库,它提供了多种方式来操作 DataFrame 对象。本文将详细介绍如何使用 Pandas 的 append() 方法向 DataFrame 中添加行。
1. 使用 append() 方法添加单行
append() 方法可以将一行或多行数据添加到 DataFrame 的末尾。这个方法不会在原地修改 DataFrame,而是返回一个新的 DataFrame。
示例代码 1:向 DataFrame 添加单行
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 创建一个要添加的新行
new_row = pd.Series({'Website': 'pandasdataframe.com', 'Pageviews': 1500})
# 添加新行
result = df._append(new_row, ignore_index=True)
print(result)
Output:

2. 使用字典添加单行
除了使用 Series 对象,还可以直接使用字典来添加行。这种方式更直观,代码更简洁。
示例代码 2:使用字典添加单行
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 使用字典添加新行
new_row = {'Website': 'pandasdataframe.com', 'Pageviews': 2000}
result = df._append(new_row, ignore_index=True)
print(result)
Output:

3. 添加多行
append() 方法同样支持添加多行。可以通过传递一个包含多个字典的列表来实现。
示例代码 3:添加多行
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 创建一个包含多个字典的列表
new_rows = [
    {'Website': 'pandasdataframe.com', 'Pageviews': 2500},
    {'Website': 'pandasdataframe.com', 'Pageviews': 3000}
]
# 添加多行
result = df._append(new_rows, ignore_index=True)
print(result)
Output:

4. 使用 concat() 方法添加行
除了 append(),Pandas 还提供了 concat() 函数,这是一个更通用的函数,可以用于沿特定轴连接多个 Pandas 对象。
示例代码 4:使用 concat() 添加单行
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 创建另一个 DataFrame
new_row = pd.DataFrame({'Website': ['pandasdataframe.com'], 'Pageviews': [3500]})
# 使用 concat 添加行
result = pd.concat([df, new_row], ignore_index=True)
print(result)
Output:

5. 使用 loc 或 iloc 直接添加行
可以使用 loc 或 iloc 索引器直接在 DataFrame 中添加行。这种方法会直接修改原始 DataFrame。
示例代码 5:使用 loc 添加行
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 使用 loc 添加新行
df.loc[len(df)] = {'Website': 'pandasdataframe.com', 'Pageviews': 4000}
print(df)
Output:

6. 处理索引问题
当使用 append() 或其他方法添加行时,经常会遇到索引重复的问题。可以通过设置 ignore_index=True 来解决。
示例代码 6:处理索引问题
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 添加新行并重置索引
new_row = {'Website': 'pandasdataframe.com', 'Pageviews': 4500}
result = df._append(new_row, ignore_index=True)
print(result)
Output:

7. 添加行时合并列
当新添加的行包含原 DataFrame 中不存在的列时,append() 方法会自动扩展 DataFrame 的列,并在不适用的地方填充 NaN。
示例代码 7:添加行时合并列
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 添加新行,包含一个新的列
new_row = {'Website': 'pandasdataframe.com', 'Pageviews': 5000, 'Visitors': 300}
result = df._append(new_row, ignore_index=True)
print(result)
Output:

8. 使用 DataFrame.append() 添加多个 DataFrame
可以使用 append() 方法将多个 DataFrame 合并成一个。这在处理分段存储的数据时非常有用。
示例代码 8:合并多个 DataFrame
import pandas as pd
# 创建两个 DataFrame
df1 = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
df2 = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [5500]
})
# 合并 DataFrame
result = df1._append(df2, ignore_index=True)
print(result)
Output:

9. 使用 merge() 方法在添加行时进行数据合并
merge() 方法通常用于根据一个或多个键将不同的 DataFrame 的行连接起来,但它也可以用于在添加行时进行复杂的数据合并操作。
示例代码 9:使用 merge() 添加行并合并数据
import pandas as pd
# 创建两个 DataFrame
df1 = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
df2 = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [6000],
    'Visitors': [350]
})
# 使用 merge 合并 DataFrame
result = pd.merge(df1, df2, on='Website', how='outer')
print(result)
Output:

10. 使用 update() 方法更新 DataFrame 在添加行时
update() 方法可以用来更新 DataFrame 的现有行或列。这在需要修改 DataFrame 的特定部分时非常有用。
示例代码 10:使用 update() 更新数据
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [1000]
})
# 创建一个新的 DataFrame,用于更新
new_data = pd.DataFrame({
    'Website': ['pandasdataframe.com'],
    'Pageviews': [6500]
})
# 更新 DataFrame
df.update(new_data)
print(df)
Output:

以上是使用 Pandas 向 DataFrame 添加行的不同方法及其示例代码。每种方法都有其适用场景,选择合适的方法可以使数据处理更加高效和灵活。
极客笔记