标签:python与Excel,pandas
Excel中的一项常见任务是在工作表中插入行,这可以通过Excel功能区命令或者右键快捷菜单或者快捷键来完成。
在Python中处理数据时,也可以将行插入到等效的数据框架中。
将行添加到数据框架中
pandas没有“插入”功能,我们不能在想象的工作表中右键单击一行,然后选择.insert()。pandas内置函数不允许我们在特定位置插入行。内置方法只允许我们在数据框架的末尾添加一行(或多行),有两种方法:append和concat。它们的工作原理非常相似,因此这里将只讨论append。让我们看一些代码。
图1
刚刚创建了一个5×3的数据框架。现在,如果想向其中添加一行,可以使用append(),它接受下列项目之一:数据框架、序列或字典。为了更好地说明,让我们添加值为100的一行。
图2
注意,新添加的行的索引值为0,这是重复的?参见第一行——原始数据框架还有一行索引为0。现在出现了一个问题,有两行的索引为0。如果我们选择索引0,我们将得到两行——原始第一行和新添加的行。在大多数情况下,这可能不是你的意图。
图3
解决这个问题很容易,只需要在append()操作中添加另一个参数ignore_index=True。这几乎等同于reset_index()。现在,你应该在索引5处有新添加的行。
图4
你可能会说,这不是你想要的,并且你想在中间添加行,正好在原始数据框架的第三行之后。那么,定制的时候到了。
模拟如何在Excel中插入行
在Excel中,当我们向表中插入一行时,实际上只是将所有内容下移一行(插入多行相同)。从技术上讲,我们将原始表“拆分”为两部分,然后将新行放在它们之间。一个图形表示如下所示。
图5:在pandas中插入行的图形化演示
我们可以模仿上述技术,并在Python中执行相同的“插入”操作。回到我们假设的要求:在第三行(即索引2)之后插入一行。
我们将创建两个新的数据框架,part_1和part_2,分别包含第1-3行和第4-5行。然后我们将使用append()方法将它们与row_to_add粘合在一起。
图6
好了,我们刚刚在第3行之后添加了值为100的新行。大多数情况下,我们会将上述内容转换为函数,以便使代码可重用。下面是一个简单的示例,注意,你应该处理用户输入的row_num<0或row_num>原始数据框架的最大长度的情况。
图7
注:本文学习整理自pythoninoffice.com。