Pandas中DataFrame的基本操作(增删)

这是一篇最基础的Pandas用法总结,也方便自己日后进行复习与查询。
这一次我们来总结一下Pandas中的一些增删改基本操作。

df = pd.DataFrame([['F',90, 88, 85],
                   ['M', 75, 97, 74],
                   ['F', 82, 73, 91],
                   ['M', 93, 99, 96]],
                  columns=['gender','chinese', 'math', 'english'],
                  index = ['小红', '小亮', '小兰', '小明'])
print(df)
[out]:
     gender  chinese  math  english
小红      F       90    88       85
小亮      M       75    97       74
小兰      F       82    73       91
小明      M       93    99       96

1. 增

1.1 增添一行
# 使用.loc()
df.loc['小白'] = ['F', 75, 64, 79]
df
[out]:
    gender  chinese  math  english
小红      F       90    88       85
小亮      M       75    97       74
小兰      F       82    73       91
小明      M       93    99       96
小白      F       75    64       79
-----------------------------------
# 使用.append()
row = {'gender': 'F', 'chinese': 45, 'math': 57, 'english': 66}
s = pd.Series(row, name='小花')
df = df.append(s)     # 注意append之后还要再赋值给df,否则df不会更改
df
[out]:   
      gender  chinese  math  english
小红      F       90    88       85
小亮      M       75    97       74
小兰      F       82    73       91
小明      M       93    99       96
小白      F       75    64       79
小花      F       45    57       66
----------------------------------------
'''
或者可以直接把字典row传入到.append()当中,
但是由于df中的列索引为标签形式,直接传入row会报错,
需要使用igore_index = True
'''
df.append(row, ignore_index = True)
[out]:
   gender  chinese  math  english
0      F       90    88       85
1      M       75    97       74
2      F       82    73       91
3      M       93    99       96
4      F       75    64       79
5      F       45    57       66
6      F       45    57       66
1.2 增添一列
# 使用列表增添新的一列age
# 默认添加到最后一列
df['age'] = [17, 18, 18, 17, 16, 17]
df
[out]:
     gender  chinese  math  english  age
小红      F       90    88       85   17
小亮      M       75    97       74   18
小兰      F       82    73       91   18
小明      M       93    99       96   17
小白      F       75    64       79   16
小花      F       45    57       66   17
------------------------------------------
# 基于已有的一列创建新的一列
# 语文成绩每人加5分
df['chinese_new'] = df['chinese'] + 5
df
[out]:
      gender  chinese  math  english  age  chinese_new
小红      F       90    88       85   17           95
小亮      M       75    97       74   18           80
小兰      F       82    73       91   18           87
小明      M       93    99       96   17           98
小白      F       75    64       79   16           80
小花      F       45    57       66   17           50
-------------------------------------------------------
# 基于已有的多列创建新的一列
# 计算三科总成绩
df['sum_score'] = df['chinese'] + df['math'] + df['english']
df
[out]:
      gender  chinese  math  english  age  chinese_new  sum_score
小红      F       90    88       85   17           95        263
小亮      M       75    97       74   18           80        246
小兰      F       82    73       91   18           87        246
小明      M       93    99       96   17           98        288
小白      F       75    64       79   16           80        218
小花      F       45    57       66   17           50        168
-----------------------------------------------------------------
# 使用.insert()将一列添加到指定位置
# 添加'class'至第一列
df.insert(0, 'class', [1,2,2,1,2,3])
[out]:
      class gender  chinese  math  english  age  chinese_new  sum_score
小红      1      F       90    88       85   17           95        263
小亮      2      M       75    97       74   18           80        246
小兰      2      F       82    73       91   18           87        246
小明      1      M       93    99       96   17           98        288
小白      2      F       75    64       79   16           80        218
小花      3      F       45    57       66   17           50        168

2. 删

2.1 删除一列
  • 使用del
del df['chinese_new']
df
[out]:
       class gender  chinese  math  english  age  sum_score
小红      1      F       90    88       85   17        263
小亮      2      M       75    97       74   18        246
小兰      2      F       82    73       91   18        246
小明      1      M       93    99       96   17        288
小白      2      F       75    64       79   16        218
小花      3      F       45    57       66   17        168
  • 使用.drop()函数
# 第一种方式,传入要删除的列名组成的列表,和参数axis=1
# axis=1删除列,axis=0删除行
df = df.drop(['sum_score'], axis=1, inplace=False)    
df
[out]:
      class gender  chinese  math  english  age
小红      1      F       90    88       85   17
小亮      2      M       75    97       74   18
小兰      2      F       82    73       91   18
小明      1      M       93    99       96   17
小白      2      F       75    64       79   16
小花      3      F       45    57       66   17
------------------------------------------------
# 第二种方式,传入columns参数
df = df.drop(columns = ['age'])
df
[out]:
      class gender  chinese  math  english  age
小红      1      F       90    88       85   17
小亮      2      M       75    97       74   18
小兰      2      F       82    73       91   18
小明      1      M       93    99       96   17
小白      2      F       75    64       79   16
小花      3      F       45    57       66   17
2.2 删除一行
# 第一种方式,传入要删除的行索引的列表,axis=0
df = df.drop(['小花'], axis=0, inplace=False)
df
[out]:
      class gender  chinese  math  english  age
小红      1      F       90    88       85   17
小亮      2      M       75    97       74   18
小兰      2      F       82    73       91   18
小明      1      M       93    99       96   17
小白      2      F       75    64       79   16
------------------------------------------------
# 第二种方式,传入index参数
df = df.drop(index=['小白'])
df
[out]:
      class gender  chinese  math  english  age
小红      1      F       90    88       85   17
小亮      2      M       75    97       74   18
小兰      2      F       82    73       91   18
小明      1      M       93    99       96   17
-----------------------------------------------
# 或者可以直接传入DataFrame的index对象
df = df.drop(df[df['class'] == 1].index)
df
[out]:
      class gender  chinese  math  english  age
小亮      2      M       75    97       74   18
小兰      2      F       82    73       91   18

关于drop函数可参考这篇博文:drop函数使用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值