繁体   English   中英

pandas 获取数据框中一行的最小值/最大值,该数据框中仅包含另一列中包含某个字符串的那些行

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

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

我在这里得到了很好的帮助how-to-keep-the-index-of-my-pandas-dataframe-after-normalazation-json

我只需要在“价格”列中的“类型”列中的值为买入/卖出时获取最小值/最大值。 最终,我也想取回该特定订单的“id”。

所以首先我需要价格值,其次我需要取回相应的“id”值。

您可以在链接中找到我正在使用的数据框。

我能做的是找到整列“价格”的最小值/最大值,如下所示:

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']]

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

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

[3 行 x 23 列] 最高买单 = 14800.0 此处为 id 和 price 。 . 交易编号 =

价格 14600.0 txid OAULXQ-3B5WJ-LMLSUC

我仍然不确定你的线路是如何工作的。 未指定买入和卖出;)

我是怎么做的 --> 我现在首先找到最高买入,然后找到那个价格的“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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM