如果 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
我在数据框中有两列:
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