如何使用 Pandas 中的 DataFrame 对象添加行数据
参考:pandas append row to dataframe
在数据分析和数据处理中,经常需要对数据进行修改和增加。Pandas 是 Python 中一个非常流行的数据处理库,它提供了非常丰富的数据结构和操作方法来处理结构化数据。本文将详细介绍如何使用 Pandas 中的 DataFrame 对象添加行数据。
1. 使用 append()
方法添加单行
Pandas 的 DataFrame 提供了 append()
方法,可以用来向 DataFrame 添加行。这个方法返回一个新的 DataFrame,包含原始数据和新增的行。
示例代码 1
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建一个新行的数据
new_row = pd.Series({'Website': 'pandasdataframe.com', 'Pageviews': 1500})
# 添加新行到 DataFrame
df = df._append(new_row, ignore_index=True)
print(df)
Output:
2. 使用 loc
或 iloc
添加行
如果你知道新行的索引位置,可以直接使用 loc
或 iloc
方法来添加或修改 DataFrame 的行。
示例代码 2
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame(columns=['Website', 'Pageviews'])
# 使用 loc 添加行
df.loc[0] = ['pandasdataframe.com', 1000]
print(df)
Output:
示例代码 3
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame(columns=['Website', 'Pageviews'])
# 使用 iloc 添加行
df.iloc[0] = ['pandasdataframe.com', 1000]
print(df)
3. 使用 concat()
方法添加多行
当需要添加多行数据时,可以使用 concat()
方法。这个方法可以连接两个或多个 DataFrame。
示例代码 4
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建另一个 DataFrame 包含多行数据
new_rows = pd.DataFrame({
'Website': ['pandasdataframe.com', 'pandasdataframe.com'],
'Pageviews': [1500, 2000]
})
# 使用 concat 添加多行
df = pd.concat([df, new_rows], ignore_index=True)
print(df)
Output:
4. 使用字典添加行
可以直接使用字典来创建一个新行,并使用 append()
方法添加到 DataFrame 中。
示例代码 5
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建一个字典表示新行
new_row = {'Website': 'pandasdataframe.com', 'Pageviews': 1500}
# 添加新行到 DataFrame
df = df._append(new_row, ignore_index=True)
print(df)
Output:
5. 使用 DataFrame.append()
添加多个字典作为行
如果有多个字典需要添加为行,可以将它们放在一个列表中,然后使用 append()
方法。
示例代码 6
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建一个列表包含多个字典
new_rows = [{'Website': 'pandasdataframe.com', 'Pageviews': 1500},
{'Website': 'pandasdataframe.com', 'Pageviews': 2000}]
# 添加新行到 DataFrame
df = df._append(new_rows, ignore_index=True)
print(df)
Output:
6. 使用 pd.DataFrame()
直接从列表创建新行
有时候,数据以列表的形式存在,可以直接使用 pd.DataFrame()
创建一个新的 DataFrame,然后使用 concat()
或 append()
方法添加到现有的 DataFrame。
示例代码 7
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建一个列表包含新行的数据
new_data = [['pandasdataframe.com', 1500], ['pandasdataframe.com', 2000]]
# 创建一个新的 DataFrame
new_df = pd.DataFrame(new_data, columns=['Website', 'Pageviews'])
# 添加新 DataFrame 到原始 DataFrame
df = pd.concat([df, new_df], ignore_index=True)
print(df)
Output:
7. 使用 DataFrame.insert()
在特定位置插入行
虽然 Pandas 没有直接的方法在 DataFrame 中的特定位置插入行,但可以通过分割 DataFrame,添加行,然后再重新连接的方式实现。
示例代码 8
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建一个新行的 DataFrame
new_row = pd.DataFrame({'Website': ['pandasdataframe.com'], 'Pageviews': [1500]})
# 分割原 DataFrame,插入新行,然后重新连接
top = df.iloc[:1]
bottom = df.iloc[1:]
df = pd.concat([top, new_row, bottom], ignore_index=True)
print(df)
Output:
8. 使用 DataFrame.merge()
合并行
如果需要根据某些键将行合并到 DataFrame 中,可以使用 merge()
方法。这通常用于数据库风格的连接操作。
示例代码 9
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建一个新行的 DataFrame
new_row = pd.DataFrame({'Website': ['pandasdataframe.com'], 'Pageviews': [1500]})
# 使用 merge 方法合并 DataFrame
df = df.merge(new_row, on='Website', how='outer')
print(df)
Output:
9. 使用 DataFrame.update()
更新行
如果 DataFrame 中已存在某些行,并且需要更新这些行的数据,可以使用 update()
方法。
示例代码 10
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 创建一个新行的数据,用于更新
new_data = pd.DataFrame({'Website': ['pandasdataframe.com'], 'Pageviews': [1500]})
# 更新 DataFrame
df.update(new_data)
print(df)
Output:
10. 使用 DataFrame.replace()
替换行数据
如果需要在 DataFrame 中替换行数据,可以使用 replace()
方法。
示例代码 11
import pandas as pd
# 创建一个初始的 DataFrame
df = pd.DataFrame({
'Website': ['pandasdataframe.com'],
'Pageviews': [1000]
})
# 替换 DataFrame 中的数据
df.replace({'Pageviews': 1000}, 1500)
print(df)
Output: