假设有Excel文件data.xlsx,其中内容为
现在需要将这个Excel文件中的数据读入pandas,并且在后续的处理中不关心ID列,还需要把sex列的female替换为1,把sex列的male替换为0。本文演示有关的几个操作。
(1)导入pandas模块
>>> import pandas as pd
(2)把Excel文件中的数据读入pandas
>>> df = pd.read_excel('data.xlsx')
>>> df
ID age height sex weight
张三 1 39 181 female 85
李四 2 40 180 male 80
王五 3 38 178 female 78
赵六 4 59 170 male 66
(3)删除ID列
可以得到新的DataFrame:
>>> df.drop('ID', axis=1)
age height sex weight
张三 39 181 female 85
李四 40 180 male 80
王五 38 178 female 78
赵六 59 170 male 66
也可以直接在原DataFrame上原地删除:
>>> df.drop('ID', axis=1, inplace=True)
>>> df
age height sex weight
张三 39 181 female 85
李四 40 180 male 80
王五 38 178 female 78
赵六 59 170 male 66
(4)替换sex列
方法一:使用replace()方法替换sex列,得到新的DataFrame,如果指定参数inplace=True,则可以原地替换。
>>> df.replace({'female':1, 'male':0})
age height sex weight
张三 39 181 1 85
李四 40 180 0 80
王五 38 178 1 78
赵六 59 170 0 66
方法二:使用map()方法+lambda表达式,原地替换。
>>> df1 = df[:]
>>> df1['sex'] = df1['sex'].map(lambda x:1 if x=='female' else 0)
>>> df1
age height sex weight
张三 39 181 1 85
李四 40 180 0 80
王五 38 178 1 78
赵六 59 170 0 66
方法三:使用map()方法+字典,原地替换。
>>> df1 = df[:]
>>> df1['sex'] = df1['sex'].map({'female':1, 'male':0})
>>> df1
age height sex weight
张三 39 181 1 85
李四 40 180 0 80
王五 38 178 1 78
赵六 59 170 0 66
方法四:使用loc类,原地替换。
>>> df1 = df[:]
>>> df1.loc[df['sex']=='female', 'sex'] = 1
>>> df1.loc[df['sex']=='male', 'sex'] = 0
>>> df1
age height sex weight
张三 39 181 1 85
李四 40 180 0 80
王五 38 178 1 78
赵六 59 170 0 66