1.要求: 将2021金额与2022金额的 ¥ 与 , 这两个符号替换为空。
导入数据及查看数据情况
import os
import pandas as pd
import numpy as np
#读取文件
def read_file(filepath):
os.chdir(os.path.dirname(filepath))
return pd.read_csv(os.path.basename(filepath),encoding='utf-8')
file_pos="F:\\python_test\\data_1.csv"
data_pos=read_file(file_pos)
data_pos
2.1.实现过程一: 使用.replace()方法。
def convert_currency(value):
'''
转换字符串数字为float类型
移除不是数字字符 ¥,
转换为float类型
'''
new_value=value.replace({',':'','¥':''},regex=True)
print(new_value)
return new_value.astype('float')
实例调用函数,成功:
#2021金额、2022金额列完整的转换代码
data_pos['2021金额']=convert_currency(data_pos['2021金额'])
用apply调用函数,报错:
data_pos['2021金额'].apply(convert_currency)
3.1发现问题: 使用实例调用函数成功,使用apply调用函数报错。
2.2.实现过程二: 使用.str.replace()方法。
def convert_currency(value):
'''
转换字符串数字为float类型
移除不是数字字符 ¥,
转换为float类型
'''
new_value=value.str.replace('¥', '').str.replace(',', '')
return new_value
实例调用函数,成功:
data_pos['2021金额']=convert_currency(data_pos['2021金额'])
用apply调用函数,报错:
data_pos['2021金额'].apply(convert_currency)
3.2发现问题: 使用实例调用函数成功,使用apply调用函数报错。
对于使用.replace()方法来进行正则替换,会默认为str.replace(old,new,count),并不存在regex这个参数,因此会报错:TypeError: str.replace() takes no keyword arguments
对于使用.str.replace()方法来进行正则替换,.str.replace()只适用于Series对象,不用作用于
对比使用apply调用函数与实例调用函数两种方法,分别传入的数据类型。
def data_type(value):
'''
用apply调用函数传入的数据类型
'''
print(value)
print(type(value))
print('______')
return value
1、用apply调用函数,传入数据类型
data_pos['2021金额'].apply(data_type)
2、实例调用函数,传入数据类型
data_type(data_pos['2021金额'])
从上面可以看出,实例调用函数传入的数据类型是