Python Pandas 向DataFrame中的特定位置添加
2020-08-19 本文已影响0人
王叽叽的小心情
在Pandas的DataFrame中的特定位置添加一行,比如在首行插入一行,或者是中间行的情况,因为append()
函数默认是添加在最后一行的。
特定行插入的主要思想是新增一列,按照新列设置的顺序进行排序即可,操作过程如下:
# 目的:在构造的dataframe中的第二行添加一行数据
# 构建一个dataframe
df = pd.DataFrame(columns=['name','number'], data=[['cat',3], ['dog',2],['pig',1]])
df
name number
0 cat 3
1 dog 2
2 pig 1
# 插入一行,随便设置索引,比如按照字符串作为索引
df.loc['new'] = ['duck', 10]
df
name number
0 cat 3
1 dog 2
2 pig 1
new duck 10
# 此时需要把最后一行安排到第二行去,方法是新增一列指明他们的顺序
df['order'] = [1, 3, 4, 2] # 所以这个顺序列表很重要
# 此时的df为
df
name number order
0 cat 3 1
1 dog 2 3
2 pig 1 4
new duck 10 2
# 按照order字段进行排序
df = df.sort_values(by='order')
df
name number order
0 cat 3 1
new duck 10 2
1 dog 2 3
2 pig 1 4
# 再接下来是重新设置索引
df = df.reset_index()
df
index name number order
0 0 cat 3 1
1 new duck 10 2
2 1 dog 2 3
3 2 pig 1 4
# 最后删除多余的列
df.drop(columns=['index','order'],inplace=True)
df
name number
0 cat 3
1 duck 10
2 dog 2
3 pig 1
# 新增的duck就插入到第二行了
小结: 虽然有点曲线救国,但思想比较简单,总之就是新增一列指定好的顺序,按照新增列的顺序重新排列即可。在正式计算中,难点将转变为对列表中的特定位置进行插入,如文中手动定义的df['order'] = [1, 3, 4, 2]
的列表。以后再进行这个基础操作的学习吧。