gpt4 book ai didi

python pandas upper() 不适用于字符串列

转载 作者:行者123 更新时间:2023-11-28 21:11:25 26 4
gpt4 key购买 nike

您好,我正在处理 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'

任何帮助表示赞赏。谢谢!

最佳答案

这是因为您的列 CabinEmbarked 包含具有 dtype np.floatNaN 值。你可以用你的申请的类型转换类型来检查它:

In [355]: train.Cabin.apply(lambda x: type(x))[:10]
Out[355]:
0 <class 'float'>
1 <class 'str'>
2 <class 'float'>
3 <class 'str'>
4 <class 'float'>
5 <class 'float'>
6 <class 'str'>
7 <class 'float'>
8 <class 'float'>
9 <class 'float'>
Name: Cabin, dtype: object

所以你可以使用 str.upper默认处理 NaN。或者您可以使用 fillnaNaN 值填充为空字符串 ''它有 upper 方法,然后使用你的 `lambda 函数:

In [363]: train.Cabin.fillna('').apply(lambda x: x.upper)[:5]
Out[363]:
0
1 C85
2
3 C123
4
Name: Cabin, dtype: object

In [365]: train.Cabin.str.upper()[:5]
Out[365]:
0 NaN
1 C85
2 NaN
3 C123
4 NaN
Name: Cabin, dtype: object

或者,如果您想将 NaN 保存为 sting,您可以使用 NaN 字符串填充 na:

In [369]: train.Cabin.fillna('NaN').apply(lambda x: x.upper())[:5]
Out[369]:
0 NAN
1 C85
2 NAN
3 C123
4 NAN
Name: Cabin, dtype: object

关于python pandas upper() 不适用于字符串列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com