Pandas - 如何根据另一个字符串值向字段添加值

时间:2018-02-12 07:35:11

标签: python pandas

我想检查字符串,如果该字符串等于条件,则执行某些操作,否则执行其他操作。

现在我无法理解你是如何实现这一点的,因为我不能使用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

1 个答案:

答案 0 :(得分:0)

您可以将布尔掩码mnumpy.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