【问题标题】:how to get a value by slicing a dataframe by giving three column names?如何通过给出三个列名来切片数据框来获取值?
【发布时间】:2021-11-19 09:15:44
【问题描述】:

嘿堆栈家族需要一些帮助才能从 pandas 数据框中获取值,但被困在这里,任何帮助将不胜感激。

我想从这个 ohlc 数据帧中获取一个值。

brick_counts  time_id  efi
   1             1     1000
   2             1     1500
   3             1     2000
   4             2     2500 
   5             2     2600
   6             2     3200 
 

这里首先从 efi 列中切出单个值,我将砖和 time_id 列作为索引并尝试获取该值。

我正在获取 time_id 的最大值,因为我需要数据帧中的最高 time_id。

ohlc.set_index(['brick_counts' , 'time_id'] , inplace = True)
latest_time = ohlc['time_id'].max()

efi_pos1 = ohlc.loc[(6,int(latest_time)),'efi']

但问题是它给了我设置索引的系列格式的值,而不是只给出我需要的单个浮点数。

谁能在不应用brick_counts 和time_id 作为索引的情况下使用任何其他切片方法来获取值?

我需要 efi 的值,其中 brick 等于 6,time_id 是数据帧中的最高值。

【问题讨论】:

  • 你要哪个号码? 2500?还是 3200?

标签: python pandas dataframe key object-slicing


【解决方案1】:
efi_pos1 = ohlc.loc[(ohlc['brick_counts'] == 6) & (ohlc['time_id'] == ohlc['time_id'].max()), 'efi'].values[0]

print(efi_pos1)

输出:

3200

【讨论】:

    【解决方案2】:

    获取最大 time_id 的第一个 efi

    df.loc[df['time_id'].idxmax(), 'efi']
    

    输出:2500

    获取最大 time_id 的最大 efi

    df.loc[df['time_id'].eq(df['time_id'].max()), 'efi'].max()
    

    输出:3200

    【讨论】:

    • 嘿@mozway 我需要根据brick_counts 和time_id 组合的值。
    • @basudevpatro 我不清楚逻辑,你想要一个最大值,哪个最大值?请在您的问题中澄清:您想要哪个号码以及为什么?
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2022-11-15
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多