【发布时间】:2016-05-22 02:03:33
【问题描述】:
您好,我正在处理 Kaggle Titanic 数据。我使用apply(lambda x: x.upper()) 处理多个列,但它不起作用。
我把数据放在我的谷歌驱动器上,你可以下载here。
我在每一列上测试,都是object类型(我认为它的意思是str,如果有错误请纠正我)。但有些专栏报道'float' object has no attribute 'upper'
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
train = pd.read_csv('train.csv', header=0)
train.ix[:,['Name', 'Sex', 'Ticket', 'Cabin', 'Embarked']].dtypes
# Name object
# Sex object
# Ticket object
# Cabin object
# Embarked object
# dtype: object
train.ix[:,['Name', 'Sex', 'Ticket', 'Cabin', 'Embarked']].apply(lambda x: x.upper())
# not work
# try each column
train.ix[:,'Name'].apply(lambda x: x.upper()) # works
train.ix[:,'Sex'].apply(lambda x: x.upper()) # works
train.ix[:,'Ticket'].apply(lambda x: x.upper()) # works
train.ix[:,'Cabin'].apply(lambda x: x.upper()) # AttributeError: 'float' object has no attribute 'upper'
train.ix[:,'Embarked'].apply(lambda x: x.upper()) # AttributeError: 'float' object has no attribute 'upper'
任何帮助表示赞赏。谢谢!
【问题讨论】:
-
我认为最好使用
str.upper方法。可能该错误是由于从object到float的类型转换与您的apply
标签: python pandas apply uppercase kaggle