Python Pandas中append方法举例详解
作者:wang2leee
原理
append
方法用于在Pandas DataFrame中追加行数据。它将另一个DataFrame、Series或类似字典的对象的数据添加到调用者DataFrame的末尾,返回一个新的DataFrame对象。
具体原理如下:
- 检查传入的
other
参数是否为DataFrame、Series或类似字典的对象。 - 根据指定的参数进行操作,将
other
中的行追加到调用者DataFrame的末尾。 - 进行数据对齐操作,确保列名一致。
- 返回一个新的DataFrame对象,其中包含调用者DataFrame和
other
数据的行。
用法
DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)
other
:要追加的DataFrame、Series或类似字典的对象。ignore_index
:是否忽略索引,在结果中重新标记行的索引,默认为False。verify_integrity
:如果为True,在创建具有重复索引的情况下会引发ValueError异常,默认为False。sort
:如果为True,则在列不对齐时对列进行排序,默认为False。
示例(含结果输出)
以下是使用append
方法的示例代码和结果输出:
import pandas as pd # 创建第一个DataFrame df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'], index=['x', 'y']) print(df1) # 输出: # A B # x 1 2 # y 3 4 # 创建第二个DataFrame df2 = pd.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'], index=['x', 'y']) print(df2) # 输出: # A B # x 5 6 # y 7 8 # 使用append方法将df2追加到df1末尾 df_appended = df1.append(df2) print(df_appended) # 输出: # A B # x 1 2 # y 3 4 # x 5 6 # y 7 8 # 创建一个Series对象 series = pd.Series([9, 10], name='C') print(series) # 输出: # 0 9 # 1 10 # Name: C, dtype: int64 # 使用append方法将series追加到df1末尾 df_appended_series = df1.append(series) print(df_appended_series) # 输出: # A B # x 1.0 2 # y 3.0 4 # 0 NaN NaN # 1 NaN NaN
在上述示例中,我们首先创建了两个DataFrame对象df1
和df2
,它们具有相同的列名和索引。然后,我们使用append
方法将df2
追加到df1
的末尾,得到一个新的DataFrame对象df_appended
。输出结果显示了追加行后的DataFrame对象。
接下来,我们创建了一个Series对象series
,并使用append
方法将其追加到df1
的末尾,得到一个新的DataFrame对象df_appended_series
。输出结果显示了追加Series后的DataFrame对象。
源码分析
# append方法的源码分析 def append(self, other, ignore_index=False, verify_integrity=False, sort=False): # ... 省略部分代码 ... return self._append(other, ignore_index=ignore_index, verify_integrity=verify_integrity, sort=sort)
在Pandas中,append
方法实际上是调用了_append
方法进行实际的追加操作。
附:Python DataFrame 的 append() 方法无效
做毕设时,需要实现 DataFrame 新增一行的功能,百度到了 DataFrame 对象有 append()
方法可以用于新增一行,但是使用时发现居然无效,并且我也进行了各种尝试,例如给创建 DataFrame 时利用 colums=[]
给表头赋值…结果还是没用。
一开始还以为是网上写错了,后来发现是自己的用法错了!!
问题解决
简化一下问题,如果这么用是错误的:
df = pd.DataFrame() df2 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) df.append(df2) print(df)
这样会发现结果永远是 Empty!!!
真正的用法如下:
df = pd.DataFrame() df2 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) df = df.append(df2) print(df)
核心在于 df.append(df2)
不会改变 df 本身,返回值才是合并后的 DataFrame 对象
反思
其实这种函数的用法并不是一个少见的现象,学过的很多语言中的很多函数都是这么用的,然而我居然还在这上面折腾了好一会儿,实在是不应该。
平时查资料时,虽然阅读速度要快,但是不要凭借自己的脑补去用函数,还是应该把函数的参数、返回值、用法给看清楚,再拿来用,以后不能犯这种低级错误。
官方链接
pandas.DataFrame.append - 官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html
总结
到此这篇关于Python Pandas中append方法举例的文章就介绍到这了,更多相关Pandas append方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!