如果 df['column'] 中的子字符串:将值添加到另一列

If substring in df['column']: add value to another column

我在数据框中有两列:

Name Count
apple x2 1
banana 0
apple x3 1

如果 apple 存在,计数已经设置为 1。我需要提取的是 'x' 存在,然后将 'x' 之后的值添加到计数列(它将是值减 1 以获得正确的数量)。

有没有办法在没有循环的情况下进行矢量化?

我试过这个循环:

for fruit in df['Name']:
    if fruit.str.contains('x', case = False, na = False):
        add = fruit[:-1]
        df['Count'] = df['Count'] + add - 1

我收到这个错误: ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

我想我离这里很远...

import pandas as pd

您可以使用to_numeric()方法和fillna()方法以及astype()方法:

df['Count']=df['Count']+pd.to_numeric(df['Name'].str[-1],errors='coerce').fillna(0).astype(int)

现在如果你打印 df 你会得到你想要的输出:

    Name        Count
0   apple x2    3
1   banana      0
2   apple x3    4