I need to filter my CSV in Impresiones_exchangecolumn with values more than 10. when I did it, I receive a new CSV (ssss.csv) with only a column and a True or False value. I need after df["eCPM_a_pagar_a_medio"] filter for values more than 10 as I said before.
def group():
df = pd.read_csv('Impresiones_VIDEO.csv', sep=',')
df = df.groupby(["Cliente","Sitio","Country"], as_index=False)['Subastas', 'Impresiones_exchange', 'Importe_a_cobrar', 'Importe_a_pagar_a_medio'].sum()
df["Fill_rate"] = ((df.Impresiones_exchange / df.Subastas )* 100).round(2)
df["eCPM_a_cobrar"] = ((df.Importe_a_cobrar / df.Impresiones_exchange )* 1000).round(2)
df["eCPM_a_pagar_a_medio"] = ((df.Importe_a_pagar_a_medio / df.Impresiones_exchange )* 1000).round(2)
a = df['Impresiones_exchange'] > 10
a.to_csv('ssss.csv')
Replace this line:
a = df['Impresiones_exchange'] > 10
With something like this:
a = df[df['Impresiones_exchange'] > 10]
The reason your code does not work is your a is set to a Boolean series. In fact, what you want is to use the Boolean series to index the dataframe.
With query I can filter the values of a csv column and take all columns!
def group():
df = pd.read_csv('Impresiones_VIDEO.csv', sep=',')
df = df.groupby(["Cliente","Sitio","Country"], as_index=False)['Subastas', 'Impresiones_exchange', 'Importe_a_cobrar', 'Importe_a_pagar_a_medio'].sum()
df["Fill_rate"] = ((df.Impresiones_exchange / df.Subastas )* 100).round(2)
df["eCPM_a_cobrar"] = ((df.Importe_a_cobrar / df.Impresiones_exchange )* 1000).round(2)
df["eCPM_a_pagar_a_medio"] = ((df.Importe_a_pagar_a_medio / df.Impresiones_exchange )* 1000).round(2)
df_filtered = df.query('Impresiones_exchange>10')
df_filtered.to_csv('Impresiones_VIDEO.csv', index=False)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With