Support needed as i want to make logic if and with python but i can't get the result i wanted or error appear Data frame i got is four column
1- first column under header (Segment) contain only one of two statement [ inbound ] or [outbound] 2- second column under header (Out_going Calls) contain number [ random number like 5,6,0,1,0] 3- Third column under header (POM_Count) contain number [ random number like 5,6,0,1,0] 4-Fourth column under header (Stuff_Time)contain number [ random number like 32400,5000,33660,20000,0]
i need to make if and as shown below DF[Inbound_Call]=if (DF["segment =inbound"] & DF["Out_going Calls"] =0),0,DF["Stuff_Time"]
DF[Outbound_Call]=if (DF["segment =Outbound"] & DF["POM_Count"] =0),0,DF["Stuff_Time"]
thanks i
Staffed Time POM_Count Out_going Calls Segment
0 33240 0.0 0 Outbound
1 33237 0.0 10 NaN
2 33076 0.0 0 Outbound
3 37848 342.0 0 Inbound
4 38836 429.0 0 Outbound
.. ... ... ... ...
275 32671 146.0 0 Inbound
276 32497 149.0 10 Outbound
277 32663 139.0 13 Inbound
278 32787 238.0 4 Outbound
279 20918 45.0 0 Outbound
i tried that code but below error appear
PG["St_after_Ded"]=np.where(PG['Segment'] == 'inbound' & PG['Out_going Calls'] == 0, 0, PG["0"])
TypeError: Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]
CodePudding user response:
I am not sure you expecting this, for condition with & operator you can use this,
df.loc[(df['Segment'] == 'inbound') & (df['Out_going Calls'] == 0), 'Status'] = '0'
print(df)
Please provide the desired output format that you need. That may make task easier.
CodePudding user response:
The logic you decribed seems to be sufficiently appropriate to use with the np.where, you just need to use the parentheses for each condition between the logic and.
import pandas as pd
import numpy as np
PG = pd.read_csv('sample.csv')
PG["Inbound_Call"] = np.where(
(PG['Segment'] == 'Inbound') & (PG['Out_going Calls'] == 0), 0, PG['Staffed Time'])
PG["Outbound_Call"] = np.where(
(PG['Segment'] == 'Outbound') & (PG['POM_Count'] == 0), 0, PG['Staffed Time'])
print(PG)
Output from PG
Staffed Time POM_Count Out_going Calls Segment Inbound_Call Outbound_Call
0 33240 0.0 0 Outbound 33240 0
1 33237 0.0 10 NaN 33237 33237
2 33076 0.0 0 Outbound 33076 0
3 37848 342.0 0 Inbound 0 37848
4 38836 429.0 0 Outbound 38836 38836
5 32671 146.0 0 Inbound 0 32671
6 32497 149.0 10 Outbound 32497 32497
7 32663 139.0 13 Inbound 32663 32663
8 32787 238.0 4 Outbound 32787 32787
9 20918 45.0 0 Outbound 20918 20918
