我想检查字符串,如果该字符串等于条件,则执行某些操作,否则执行其他操作。
现在我无法理解你是如何实现这一点的,因为我不能使用where
因为我的值是字符串而不是数字。
想象一下每个条目都有一个字符串的字段:
abcde test1 12345 AAA
abcde test2 12345
abcde test3 12345 AAA
abcde test4 12345 AAA
我想放入一个名为“joint”的字段,如果第四个值是“AAA”,则输入值“abcde”和“test1”,否则我只想添加“abcde”。
我可以在字段中拆分值,因此我可以使用
进入“AAA” df['compositestring'].str.split(' ').str[3]
但是,对于数据集中的每个值,我如何告诉pandas做这样的事情?
if df['compositestring'].str.split(' ').str[3] == "AAA":
df['joint'] = df['compositestring'].str.split(' ').str[0]
else:
df['joint'] = df['compositestring'].str.split(' ').str[0] + " " + df['compositestring'].str.split(' ').str[1]
所以我可以在名为“joint”
的字段中输出类似的输出joint
abcde test1
abcde
abcde test3
abcde test4
答案 0 :(得分:0)
您可以将布尔掩码m
与numpy.where
:
splitted = df['compositestring'].str.split()
m = splitted.str[3] == "AAA"
a = splitted.str[0]
b = a + " " + splitted.str[1]
df['joint'] = np.where(m, b, a)
print (df)
compositestring joint
0 abcde test1 12345 AAA abcde test1
1 abcde test2 12345 abcde
2 abcde test3 12345 AAA abcde test3
3 abcde test4 12345 AAA abcde test4