pandas的DataFrame的列操作,多列选择,按数据类型,按列名称特征filter 选择指定的列数据

pandas的DataFrame的列操作,多列选择,按数据类型,按列名称特征filter

一、按各列数据的类型选择列

已知movies为从csv文件读入的dataframe名称

movies.select_dtypes(include='int')
#所有列数据为int类型的列被选中
movies.select_dtypes(include='number')
movies.select_dtypes(include=['int', 'object'])
#所有列数据为int类型和object字符串的列被选中
movies.select_dtypes(exclude='float')
#所有列数据类型不是float的列被选中

二、指定列名称选择

1、列名称以字符串''   ''方式给出,则列数据为series类型

2、列名称以列表方式[''  '']给出,则列数据为dataframe类型

3、用.loc[:,name]切片方法选择

movies[['director_name']]
type(movies[['director_name']])
pandas.core.frame.DataFrame
#字符串用[]扩住的,即列表方式给出

movies['director_name']
type(movies['director_name'])
pandas.core.series.Series
#字符串用' ' 扩住的,

用切片方法。loc
movies.loc[:, ['director_name']]

movies.loc[:, 'director_name']


多个列名
cols = ['actor_1_name', 'actor_2_name',
        'actor_3_name', 'director_name']
movie_actor_director = movies[cols]

与上面完全等效
movie_actor_director = movies[['actor_1_name', 'actor_2_name',
    'actor_3_name', 'director_name']]

三、用方法filter 选择列名称中具有指定特征的列

方法filter有三个互斥的参数

like="fb",筛选选择列名中含有fb字符串的列

item=col  col=['name1','name2']是包含多个列名的列表

正则表达式 regex=r''\d'' 表示筛选出列名中至少包含0~9任意数字的字符串

movies.filter(like='fb')

cols = ['actor_1_name', 'actor_2_name',
        'actor_3_name', 'director_name']
movies.filter(items=cols)

movies.filter(regex=r'\d')

四、修改列名,按照要求批量修改

自定义函数中,将列名称中含有facebook_likes的字符串用fb缩写替代

将字符串_for_reviews删除

使用rename方法修改列名称,函数名可以在方法的参数中使用?

def shorten(col):
    return (col.replace('facebook_likes', 'fb')
               .replace('_for_reviews', '')
    )
movies = movies.rename(columns=shorten)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值