pandas 获取数据框中某行的 min/max 值,该数据框仅包含那些在另一列中包含特定字符串的行

pandas get the min/max value of a row in a dataframe of only those rows that contain a certain string in another column

我现在觉得很傻,这应该很容易。

我在这里得到了很好的帮助

我只需要在 'type' 列中的值为 buy/sell 的情况下获取 'price' 列中的 min/max 值。最后,我还想为该特定订单取回 'id'。

所以首先我需要价格值,其次我需要取回 'id' 对应的值。

您可以在 link.

中找到我正在使用的数据框

我能做的就是找到整列 'price' 的 min/max 值,如下所示:

x = df['price'].max() # = max price

我可以像这样整理出所有“购买”类型:

d = df[['type', 'price']].value_counts(ascending=True).loc['buy']

但我还是不能同时做。

您必须在数据框中使用 .loc 方法才能过滤类型。

import pandas as pd

data = {"type":["buy","other","sell","buy"], "price":[15,222,11,25]}
df = pd.DataFrame(data)


buy_and_sell = df.loc[df['type'].isin(["sell","buy"])]
min_value = buy_and_sell['price'].min()
max_value = buy_and_sell['price'].max()

min_rows = buy_and_sell.loc[buy_and_sell['price']==min_value]
max_rows = buy_and_sell.loc[buy_and_sell['price']==max_value]

min_rows 和 max_rows 可以包含多行,因为可能会重复相同的最低价格。

要提取索引,只需使用 .index。

hbid = df.loc[df.type == 'buy'].min()[['price', 'txid']]

给我最低的价格值和最低的 txid 值,而不是属于价格最低的订单的 ID。 .任何帮助或提示将不胜感激!

0 OMG4EA-Z2WUP-AQJ2XU None ... 买入 0.00200000 XBTEUR @ limit 14600.0
1 OBTJMX-WTQSU-DNEOES None ... 买入 0.00100000 XBTEUR @ limit 14700.0
2 OAULXQ-3B5WJ-LMLSUC None ... 买入 0.00100000 XBTEUR @ limit 14800.0

[3 行 x 23 列] 最高买单 = 14800.0 这里是 id 和 price 。 . txid =

价格 14600.0 txid OAULXQ-3B5WJ-LMLSUC

我仍然不确定您的线路是如何工作的。 buy_and_sell 未指定 ;)

我是怎么做到的 --> 我现在首先找到最高买入价,然后找到该价格的 'txid',然后我不得不从返回的系列中删除索引。最后我不得不删除字符串前的空格。不知道它是怎么来的

def get_highest_sell_txid():
hs = df.loc[df.type == 'sell', :].max()['price'] 
hsid = df.loc[df.price == hs, :] 
xd = hsid['txid'] 
return xd.to_string(index=False)




 xd = get_highest_sell_txid()
    sd = xd.strip()
    cancel_order = 'python -m krakenapi CancelOrder txid=' + sd  #
    subprocess.run(cancel_order)