无法为 Pandas 中的某些列赋值
Posted
技术标签:
【中文标题】无法为 Pandas 中的某些列赋值【英文标题】:Cannot assign a value to certain columns in Pandas 【发布时间】:2018-05-07 23:16:45 【问题描述】:您好,我正在尝试在数据框的列中分配某些值。
# Count the number of title counts
full.groupby(['Sex', 'Title']).Title.count()
Sex Title
female Dona 1
Dr 1
Lady 1
Miss 260
Mlle 2
Mme 1
Mrs 197
Ms 2
the Countess 1
male Capt 1
Col 4
Don 1
Dr 7
Jonkheer 1
Major 2
Master 61
Mr 757
Rev 8
Sir 1
Name: Title, dtype: int64
我的数据框尾部如下所示:
Age Cabin Embarked Fare Name Parch PassengerId Pclass Sex SibSp Survived Ticket Title
413 NaN NaN S 8.0500 Spector, Mr. Woolf 0 1305 3 male 0 NaN A.5. 3236 Mr
414 39.0 C105 C 108.9000 Oliva y Ocana, Dona. Fermina 0 1306 1 female 0 NaN PC 17758 Dona
415 38.5 NaN S 7.2500 Saether, Mr. Simon Sivertsen 0 1307 3 male 0 NaN SOTON/O.Q. 3101262 Mr
416 NaN NaN S 8.0500 Ware, Mr. Frederick 0 1308 3 male 0 NaN 359309 Mr
417 NaN NaN C 22.3583 Peter, Master. Michael J 1 1309 3 male 1 NaN 2668 Master
我的数据框的名称是full
,我想更改标题的名称。
下面是我写的代码:
# Create a variable rate_title to modify the names of Title
rare_title = ['Dona', "Lady", "the Countess", "Capt", "Col", "Don", "Dr", "Major", "Rev", "Sir", "Jonkheer"]
# Also reassign mlle, ms, and mme accordingly
full[full.Title == "Mlle"].Title = "Miss"
full[full.Title == "Ms"].Title = "Miss"
full[full.Title == "Mme"].Title = "Mrs"
full[full.Title.isin(rare_title)].Title = "Rare Title"
我还在 pandas 中尝试了以下代码:
full.loc[full['Title'] == "Mlle", ['Sex', 'Title']] = "Miss"
仍然没有改变数据框。任何帮助表示赞赏。
【问题讨论】:
Update row values where certain condition is met in pandas的可能重复 @JesseBarnett 你能找到另一个副本吗?这个答案是一团糟,并没有真正解决这个问题。 【参考方案1】:使用基于loc
的索引并设置匹配的行值 -
miss = ['Mlle', 'Ms', 'Mme']
rare_title = ['Dona', "Lady", ...]
df.loc[df.Title.isin(miss), 'Title'] = 'Miss'
df.loc[df.Title.isin(rare_title), 'Title'] = 'Rare Title'
【讨论】:
谢谢coldspeed。我会检查您的解决方案并稍后回复您 我应用了你的代码并检查了数据框的头部和尾部,似乎标题没有改变。 @JaneshDevkota 我有一些关于原因的想法。你是如何加载数据的?似乎其中很多都有前导空格字符。 你是对的。由于空格字符,看起来可能代码不起作用。我删除了它们,它工作正常。 不错,我以为就是这样。以上是关于无法为 Pandas 中的某些列赋值的主要内容,如果未能解决你的问题,请参考以下文章
pandas 用 .loc[,]=value 筛选并原地赋值回原来的 DataFrame
pandas使用shift函数对数数据进行向上偏移(-1)或者向下偏移索引不移动,移动之后无值的赋值为NaN将原数据列与偏移后的数据列相加生成新的数据列