[英]How to get a single value from pandas dataframe?
我是熊猫新手。
我试图基于另一列中的值来获取特定的值。 但是,输出是作为值的列表而不只是一个值而来的,尽管我可以尝试这样做,但我想了解自己在做错什么。 `prem_ce'
OpenInterest Volume BidPrice OfferPrice StrikePrice prem_ratio
6 8,296,000 3,934 4.15 4.25 100.0 3.0
7 10,872,000 3,981 1.60 1.65 110.0 2.0
8 8,692,000 1,302 0.70 0.75 120.0 2.0
9 5,524,000 1,118 0.35 0.40 130.0 1.0
10 3,108,000 110 0.20 0.25 140.0 1.0
11 2,692,000 55 0.10 0.15 150.0 1.0
12 1,908,000 4 0.05 0.10 160.0 0.0
13 1,176,000 8 0.05 0.10 170.0 0.0
14 920,000 6 0.05 0.10 180.0 0.0
15 192,000 1 0.05 0.10 190.0 0.0
16 336,000 7 0.05 0.10 200.0 0.0
17 168,000 2 0.00 0.10 210.0 0.0
18 24,000 2 0.00 0.10 220.0 0.0
19 0 0 0.00 0.10 230.0 0.0
20 0 0 0.00 0.15 240.0 NaN
我尝试了以下方法:
for ratio in prem_ce['prem_ratio']:
if ratio >= 2 and ratio is not 'NaN':
x = int(ratio)
ratio_row = prem_ce.index[prem_ce['prem_ratio'] == ratio]
ce_strike_sell = prem_ce['StrikePrice'][ratio_row].values
print(ce_strike_sell)
我得到以下输出:
[ 100.]
[ 110. 120.]
[ 110. 120.]
我已经通过prem_ratio
prem_ce['prem_ratio'] = prem_ce['BidPrice'] / prem_ce['OfferPrice'].shift(-1)
现在我试图把双方StrikePrice
用于计算prem_ratio
成variables
。
我不明白为什么要得到一个list
,而第一个list
只有一个值,而另外两个只有2个值。
编辑 -
我希望程序能够遍历每一行,并在条件满足时给我1个值。 即3个循环中的100.0、110.0、120.0。
我期望输出是
第一个循环: ce_strike_sell = 100.0
第2循环: ce_strike_sell = 110.0
第三循环: ce_strike_sell = 120.0
我不确定是否有办法做到这一点,因为我对熊猫还很陌生
发生这种情况是因为该行:
ratio_row = prem_ce.index[prem_ce['prem_ratio'] == ratio]
正在选择所有prem_ratio
等于ratio
的索引,并且在数据帧中有多个行具有相同的prem_ratio
之所以获得列表,是因为prem_ce['StrikePrice'][ratio_row]
是一个Series,而属性values
获取该Series的值列表。
比较容易的是:
prem_ce[prem_ce['prem_ratio'] >= 2]['StrikePrice']
这又是一个系列。
我不明白为什么要得到一个列表,而第一个列表只有一个值,而另外两个只有2个值。
每行的逻辑如下:
ratio_row >= 2
,则找到所有比率,其中ratio == ratio_row
,其中ratio_row
是该行的比率。 ratio == 3
只有一行,而ratio == 2
只有2行。 因此,第一行将获得1个值,接下来的2行将获得2个值。 目前尚不清楚为什么只期望每一行有一个值,或者期望什么是期望的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.