将大写应用于pandas dataframe

时间:2015-07-07 12:59:55

标签: python python-2.7 pandas

我在将大写字母应用于DataFrame中的列时遇到了问题。

数据框为df

1/2 ID是需要应用大写的列标题。

问题是这些值由三个字母和三个数字组成。例如,rrr123是其中一个值。

df['1/2 ID'] = map(str.upper, df['1/2 ID'])

我收到了一个错误:

TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode' error.

如何将大写字母应用于DataFrame df列中的前三个字母?

3 个答案:

答案 0 :(得分:51)

如果您的熊猫版本是最新版本,那么您可以使用矢量化字符串方法upper

df['1/2 ID'] = df['1/2 ID'].str.upper()

此方法无法正常工作,因此必须重新分配结果。

答案 1 :(得分:20)

这应该有效:

df['1/2 ID'] = map(lambda x: str(x).upper(), df['1/2 ID'])

并且您是否希望所有columns名称都采用大写格式:

df.columns = map(lambda x: str(x).upper(), df.columns)

答案 2 :(得分:5)

str.upper()需要一个普通的Python 2字符串

unicode.upper()会想要一个unicode而不是一个字符串(或者你得到TypeError:描述符' upper'需要一个' unicode'对象但是收到了' str&# 39)

所以我建议使用鸭子打字并在每个元素上调用.upper(),例如。

df['1/2 ID'].apply(lambda x: x.upper(), inplace=True)