我是靠谱客的博主 英俊飞鸟,最近开发中收集的这篇文章主要介绍对DataFrame数据按列处理对DataFrame数据按列处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对DataFrame数据按列处理

获取列名使用.columns()函数。

import pandas as pd
df=pd.DataFrame({'id':[1,2,3,4,5],'a':[1, 3, 5, 7,9],'b':[2 , 4 , 6, 8, 19], 'c': [4, 6, 9, 12, 20],'d':['yes','yes','no','no','yes']})
df
idabcd
01124yes
12346yes
23569no
347812no
4591920yes
df.columns
Index(['id', 'a', 'b', 'c', 'd'], dtype='object')

注意df.columns的类型是Index,不可修改。

type(df.columns)
pandas.core.indexes.base.Index
df.columns[1]='d'
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-12-ed755c965e42> in <module>
----> 1 df.columns[1]='d'


C:ProgramDataAnaconda3libsite-packagespandascoreindexesbase.py in __setitem__(self, key, value)
   3908 
   3909     def __setitem__(self, key, value):
-> 3910         raise TypeError("Index does not support mutable operations")
   3911 
   3912     def __getitem__(self, key):


TypeError: Index does not support mutable operations

如果要提取df中的某些列,比如需要对于数值类型和文本类型的列做不同的处理,就需要将二者分开。这里的文本类型是’d’,另外,'id’也不必参与到后续的数据处理当中去。

cate=['d']
num=df.columns.drop(cate).drop('id')
num
Index(['a', 'b', 'c'], dtype='object')

注意此处的.drop()会在不影响df.columns的内容的情况下生成一个去除了其中含有的cate之后的副本,如果其中不含有drop的内容还会报错,在对不同类型的列做处理时很实用。
与此对应,.remove()会在原列表上删除对象(所以对于Index是不可用的,对list可用),不产生副本,各有适用场合。

如果想获得列名称并进行操作,使用.tolist()。

col_name=df.columns.tolist()
type(col_name)
list
data_cate=df[cate]
data_num=df[num]

将数值型和文本型数据分开后可用分别处理,例如数值型做标准化,文本型做编码。如果需要把经过分别处理后的数据合成一个表,可以使用pd.concat()函数。

data_processed=pd.concat([data_cate,data_num],axis=1)
data_processed
dabc
0yes124
1yes346
2no569
3no7812
4yes91920

最后

以上就是英俊飞鸟为你收集整理的对DataFrame数据按列处理对DataFrame数据按列处理的全部内容,希望文章能够帮你解决对DataFrame数据按列处理对DataFrame数据按列处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部