【问题标题】:Apply loc for 2 columns values Pandas将 loc 应用于 2 列值 Pandas
【发布时间】:2018-01-24 13:17:56
【问题描述】:

我想用 2 列参数定位一个数据框: 如果我这样做 paises_cpm = df.loc[a]is 工作但如果我这样做 paises_cpm = df.loc[a,b] 我收到一个错误: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)

【问题讨论】:

    标签: python pandas pandas-loc


    【解决方案1】:

    对于or 或& 对于and,您需要使用| 的链条件:

    paises_cpm = df.loc[a | b]
    

    或者:

    paises_cpm = df.loc[a & b]
    

    有可能的单行解决方案,但括号是必要的:

    paises_cpm = df.loc[(df['Subastas'] > subastas) | 
                        (df['Impresiones_exchange'] > impresiones)
                       ]
    

    【讨论】:

    • 你能告诉我如何按值排序:paises_cpm = paises_cpm.sort_values(by=['Country', 'Subastas'],ascending=False) 它有效,但我需要使用 Country ascending and Subastas descending 来完成它
    • 你真的很亲密,需要将ascending=False更改为ascending=[True, False]
    猜你喜欢
    • 1970-01-01
    • 2019-04-17
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2018-09-07
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多