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 添加行的不同方法及其示例代码。每种方法都有其适用场景,选择合适的方法可以使数据处理更加高效和灵活。