在Excel添加行和列时,可以通过手工输入、复制粘贴、用函数引入或计算等方式完成,在Pandas中,要对DataFrame表格添加行和列,也可以手工输入,或者通过引入、计算等方式完成,不过现在需要重点关注的是数据格式,也就是添加行和列时的代码写法。
添加行分为添加单行和多行,添加单行时可以直接表示出添加的行索引,也可以使用df.append()函数,该函数不但可以添加单行,还可以添加多行。
1)df.append()添加法
使用df.append()函数添加行时,函数的第1参数数据结构要求是Series或DataFrame,当参数是Series时,添加的是单行,示例代码如下:
添加单行前后效果对比如图4-29所示。
图4-29 添加单行前后效果对比(1)
在添加行时,设置了行数据Series的name属性,此属性的值可以作为添加行的行索引标签。如果希望按照自然序号设置行索引,则Series的name属性可以不设置,但df.append()函数的第2参数就必须设置为True,此参数是设置是否按自然序号添加行索引,默认值为False。示例代码如下:
添加单行前后效果对比如图4-30所示。
图4-30 添加单行前后效果对比(2)
2)行数据直接添加法
除了使用df.append()函数添加行之外,还可以直接表示出添加的行索引,添加行的数据结构可以是列表、元组、数组等,示例代码如下:
添加单行前后效果对比如图4-31所示。
图4-31 添加单行前后效果对比(3)
同样,直接表示出添加的行时,行索引也可以是自然序号,示例代码如下:
添加单行前后效果对比如图4-32所示。
图4-32 添加单行前后效果对比(4)
分析一下关键代码df.loc[len(df)]=['YB101','大维',88,99,110],其中len(df)表示获取df表的行数,结果为df.loc[2],第2行在df表中并不存在,但将列表的赋值给该行时,就变成了添加行效果。
注意: 在使用df.append()添加法和行数据直接添加法时,如果表示的行索引已经存在,df.append()函数会继续添加新行,而行数据直接添加法则是替换已经存在的行。
在给DataFrame表格添加多行数据时,如果每行数据是Series、列表、数组等结构,则除了可以使用循环方式来添加,也可以将多行生成一个DataFrame表格,然后使用df.append()函数来添加,本质就是两个DataFrame表格的合并,示例代码如下:
添加多行前后效果对比如图4-33所示。
图4-33 添加多行前后效果对比
在指定DataFrame表格上添加列时,有直接添加列和df.assign()函数两种方式,添加列的数据结构可以是列表、数组、Series等可迭代对象。
直接添加列的方式,一般使用df[列索引标签]或者df.loc[:,列索引标签]两种方式,示例代码如下:
添加单列前后效果对比如图4-34所示。
图4-34 添加单列前后效果对比(1)
还可以使用df.assign()函数执行列的添加,一次可以添加多个单列,并且是在原始表上添加列,示例代码如下:
添加单列前后效果对比如图4-35所示。
图4-35 添加单列前后效果对比(2)
注意: 无论是使用直接添加列的方式,还是使用df.assign()函数添加列,如果新增列名与原来表格列名相同,则新增列数据会替换原来列的数据。