繁体   English   中英

如何从熊猫数据框中获取单个值?

[英]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_ratiovariables

我不明白为什么要得到一个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个值。

每行的逻辑如下:

  1. 如果ratio_row >= 2 ,则找到所有比率,其中ratio == ratio_row ,其中ratio_row是该的比率。
  2. ratio == 3只有一行,而ratio == 2只有2行。 因此,第一行将获得1个值,接下来的2行将获得2个值。

目前尚不清楚为什么只期望每一行有一个值,或者期望什么是期望的输出。

暂无
暂无

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

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