我正在使用FIFA 19中的数据集,目前正在尝试将字符串值,工资和发布条款转换为浮点值,例如€110.5M变成110500000。这是我的函数,该函数将文本作为参数并返回浮点值:
def text_to_num(text):
d = {'K': 3, 'M': 6, 'B': 9}
new_text = text[1:]
if new_text[-1] in d:
num = new_text[:-1]
magnitude = new_text[-1]
return Decimal(num) * 10 ** d[magnitude]
else:
return Decimal(new_text)
将其应用于单个列非常容易,例如值:
def convert_into_float(data):
data['Value'] = data['Value'].apply(text_to_num)
return data
我想知道,如何一次转换所有3列,而不是使用上述函数三次。
def main():
# load the data from .csv file, use ID column as index
new_data = load_data("data.csv", 'ID')
new_data = convert_into_float(new_data)
答案 0 :(得分:1)
您可以将DataFrame.applymap
与按列表过滤的列一起使用:
def convert_into_float(data):
cols = ['col1','col2','col3']
data[cols] = data[cols].applymap(text_to_num)
return data