Reputation: 361
I´m tying to loc a dataframe with 2 columns parameters:
if I do paises_cpm = df.loc[a]
is working but if I do paises_cpm = df.loc[a,b]
I receive an error: IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match
import pandas as pd
import time
fecha = time.strftime(str((int(time.strftime("%d")))-1))
subastas = int(fecha) * 5000
impresiones = int(fecha) * 1000
df = pd.read_csv('Cliente_x_Pais.csv')
a = df['Subastas'] > subastas
b = df['Impresiones_exchange'] > impresiones
paises_cpm = df.loc[a,b]
paises_cpm.to_csv('paises_cpm.csv', index=False)
Upvotes: 4
Views: 15162
Reputation: 862691
You need chain conditions with |
for or
or &
for and
:
paises_cpm = df.loc[a | b]
Or:
paises_cpm = df.loc[a & b]
There is possible one line solution, but parentheses are necessary:
paises_cpm = df.loc[(df['Subastas'] > subastas) |
(df['Impresiones_exchange'] > impresiones)
]
Upvotes: 8