pandas的简单使用(删除)

创建一个DataFrame

import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(12).reshape(3,4),index=['x','y','z'],columns=['a','b','c','d'])
print(df)

'''
   a  b   c   d
x  0  1   2   3
y  4  5   6   7
z  8  9  10  11
'''

删除行

删除单行

# 删除索引为 x 的行
df.drop('x',axis=0,inplace=True)
df.drop(index='x', axis=0, inplace=True)


# 以人的思维来数,删除第三行。也就是对应例子中的z行
df.drop(df.index[2:3], axis=0, inplace=True)
df.drop(df.index[2], axis=0, inplace=True)
df.drop(df.index[[2]], axis=0, inplace=True)

删除多行

# 删除索引为 x y 的行
df.drop(index=['x','y'],axis=0,inplace=True)

# 删除前两行
df.drop(index=df.index[0:2], axis=0, inplace=True)

# 删除前两行(注意中括号的数量是两对)
x=[0, 1]
df.drop(index=df.index[x], axis=0, inplace=True)

删除列

删除单列

# 指定列名删除
df.drop('a',axis=1,inplace=True)
del df['a']


# 以人的思维来数,删除第三列。也就是对应例子中的c列
df.drop(df.columns[2:3], axis=1, inplace=True)
df.drop(df.columns[2], axis=1, inplace=True)
df.drop(df.columns[[2]], axis=1, inplace=True)

删除多列

# 指定列名删除
df.drop(['a','c'],axis=1,inplace=True)

# 删除前两列
df.drop(df.columns[0:2], axis=1, inplace=True)

# 删除前两列
x=[0, 1]
df.drop(df.columns[x], axis=1, inplace=True)

按条件删除

思路是根据条件查询, 提取索引,然后删除

# 删除名字里含张和李的。(不单单指张姓和李姓)
ind = list(df.loc[df['name'].str.contains('李') | df['name'].str.contains('张')].index)
df = df.drop(index=ind, axis=0)

# 删除所有年龄小于18的
ind = list(df[df.age<18].index)
df.drop(index=ind,axis=0,inplace=True)

https://blog.csdn.net/qq_18351157/article/details/105785367

参数axis

参数axis满足如下条件

  • axis参数不写,默认是0
  • axis=0 与 axis=‘index’ 表示对行操作
  • axis=1 与 axis=‘columns’ 表示对列操作

指定了axis,就是要让这个axis动起来(类似被for变量),其他的axis保持不变

行操作

# 删除索引为 x 的那一行
df.drop('x',axis=0, inplace=True)
# axis=0指定对行操作,让行动起来,列是固定的,所以最终输出每一列的平均值
print(df.mean(axis=0))
'''
a    4.0
b    5.0
c    6.0
d    7.0
'''
# axis=0指定对行操作,让行动起来,最终输出每一列的和
# df.loc['col_sum'] = df.sum(axis=0)
df.loc['col_sum',:] = df.sum(axis=0)
print(df)
'''
            a     b     c     d
x         0.0   1.0   2.0   3.0
y         4.0   5.0   6.0   7.0
z         8.0   9.0  10.0  11.0
col_sum  12.0  15.0  18.0  21.0
'''

# 等价于:
def get_col_sum(x):
    return x['x']+x['y']+x['z']
df.loc['col_sum',:] = df.apply(get_col_sum, axis=0)
print(df)

列操作

# 删除列名为 a 的列 
df.drop('a',axis=1, inplace=True)
# axis=1指定对列操作,让列动起来,行是固定的,所以最终输出每一行的平均值
print(df.mean(axis=1))
'''
x    1.5
y    5.5
z    9.5
'''
# axis=1指定对列操作,让列动起来 最终输出每一行的和
# df['row_sum'] = df.sum(axis=1)
df.loc[:,'row_sum'] = df.sum(axis=1)
'''
   a  b   c   d  col_sum
x  0  1   2   3        6
y  4  5   6   7       22
z  8  9  10  11       38
'''

# 等价于
def get_row_sum(x):
    return x['a']+x['b']+x['c']+x['d']
df.loc[:,'row_sum'] = df.apply(get_row_sum, axis=1)
print(df)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值