【发布时间】:2017-06-16 19:19:39
【问题描述】:
我在 pandas 中有一个数据框,有四列。数据由字符串组成。示例:
A B C D
0 2 asicdsada v:cVccv u
1 4 ascccaiiidncll v:cVccv:ccvc u
2 9 sca V:c u
3 11 lkss v:cv u
4 13 lcoao v:ccv u
5 14 wuduakkk V:ccvcv: u
如果该行中的 Col C 包含子字符串“V”(区分大小写),我想将 Col D 中的字符串“u”替换为字符串“a”。 期望的结果:
A B C D
0 2 asicdsada v:cVccv a
1 4 ascccaiiidncll v:cVccv:ccvc a
2 9 sca V:c a
3 11 lkss v:cv u
4 13 lcoao v:ccv u
5 14 wuduakkk V:ccvcv: a
我更喜欢覆盖 D 列中已经存在的值,而不是分配两个不同的值,因为我想稍后在不同的条件下有选择地再次覆盖其中的一些值。
似乎这应该有一个简单的解决方案,但我无法弄清楚,并且无法在其他已回答的问题中找到完全适用的解决方案。
df.ix[1]["D"] = "a"
更改单个值。
df.ix[:]["C"].str.contains("V")
返回一系列布尔值,但我不确定如何处理它。我尝试了 .loc、apply、contains、re.search 和 for 循环的许多组合,我得到错误或替换 D 列中的每个值。我是 pandas/python 的新手,所以很难知道是否我什至需要做的事情的语法、方法或概念化都已关闭(可能以上所有)。
【问题讨论】: