Reputation: 37
I have two columns in a dataframe as such:
Name | Count |
---|---|
apple x2 | 1 |
banana | 0 |
apple x3 | 1 |
If apple is present, the count is already set to 1. I need to extract is 'x' is present and then add the value after 'x' to the count column (it will be the value minus 1 to get the right amount).
Is there a way to do this vectorized without a loop?
I tried this loop:
for fruit in df['Name']:
if fruit.str.contains('x', case = False, na = False):
add = fruit[:-1]
df['Count'] = df['Count'] + add - 1
I get this error: ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
I think I am way off here...
Upvotes: 0
Views: 40
Reputation: 24314
import pandas as pd
You can use to_numeric()
method and fillna()
method and astype()
method:
df['Count']=df['Count']+pd.to_numeric(df['Name'].str[-1],errors='coerce').fillna(0).astype(int)
Now If You print df
you will get your desired output:
Name Count
0 apple x2 3
1 banana 0
2 apple x3 4
Upvotes: 1