【问题标题】:Looking up a column value based on two column values in a pandas dataframe根据 pandas 数据框中的两列值查找列值
【发布时间】:2020-07-18 17:28:47
【问题描述】:

我需要从基于两个特定列值的列中获取值。

示例数据框:

   Charge Code  Billing Number   Date 
0   1250-001      500220        1/2/20
1   1230-002      300220        2/6/20
2   1250-001      500320        3/8/20
3   1225-001      250120        4/9/20
4   1225-002      250120        5/16/20
5   1136-010      361219        12/9/19

我想获取费用代码为 1250-001 和帐单编号为 500320(即 2020 年 3 月 8 日)的行的日期

我正在尝试使用以下行:

the_date = df_hold.loc[df_hold['Charge Code'] == '1250' & df_hold['Billing Number'] == 500320].index.values

并收到以下错误:

KeyError: 'the label [1250-001] is not in the [index]'

使用后: the_date = df_hold.loc[(df_hold['收费代码'] == '1250-001') & (df_hold['帐单号码'] == 500320), '日期']

我得到了以下信息:

configure_logger, configure_logger.setup_logger
3    3/8/2020
Name: Invoice Date, dtype: object

有没有办法自己获取日期?

【问题讨论】:

    标签: pandas dataframe pandas-loc


    【解决方案1】:

    你需要括号:

    the_date = df_hold.loc[(df_hold['Charge Code'] == '1250-001') & 
                           (df_hold['Billing Number'] == 500320), 'Date']
    

    更新:

    the_date = df_hold.loc[(df_hold['Charge Code'] == '1250-001') & 
                           (df_hold['Billing Number'] == 500320), 'Date'].to_numpy()
    

    the_date = df_hold.loc[(df_hold['Charge Code'] == '1250-001') & 
                           (df_hold['Billing Number'] == 500320), 'Date'].to_numpy()[0]
    

    【讨论】:

    • 根据我从该解决方案收到的输出,我在问题中添加了更多内容。
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2021-05-15
    • 2017-06-02
    • 1970-01-01
    • 2014-04-27
    • 2017-09-03
    相关资源
    最近更新 更多