在DF

时间:2019-12-13 08:23:09

标签: python dataframe

我在英国有大约2500个IPO的数据框架。其中两列是“交易所”(交易的交易所)。另一列是“ StartToEnd”,其中指出了从第一天到结束的IPO价格变化,所以我可能是“ 7.56”,所以价格上涨了7.56%,如果价格下跌,它可能是负数。我想做的是能够计算出每个交易所在“ StartToEnd”列中具有正值的IPO数量。

因此理想情况下,它会得到一个答案,例如:

London Stock Exchange.  1356

Berlin stock Exchange.  659

表示有1356只被低估的IPO在伦敦证券交易所交易

到目前为止,我所做的全部工作都是使用上面提到的两列创建一个较小的数据框,如下所示:

Index   Exchange   StartToEnd

0.        London...       17.12

1.        London...        -1.5

2.        Berlin...        14.94

Etc...

2 个答案:

答案 0 :(得分:0)

我想这就是您要寻找的东西

df=pd.DataFrame({'Exchange':['London','London','London','Berlin','London','London','Berlin','London','London',], 'StartToEnd':[1,2,3,4,-1,-1,-2,-1,3]})

  Exchange  StartToEnd
0   London           1
1   London           2
2   London           3
3   Berlin           4
4   London          -1
5   London          -1
6   Berlin          -2
7   London          -1
8   London           3

df[df['StartToEnd'].gt(0)].Exchange.value_counts()

London    4
Berlin    1
Name: Exchange, dtype: int64

答案 1 :(得分:0)

根据您的描述进行猜测,您应该拥有一个包含以下列的数据框-

df - 
Company Exchange StartToEnd
Comp1   London   1.23%
Comp2   Berlin   2.45%
Comp3   London   -0.54%
Comp4   London   12.54%
.
.
.
CompN   Berlin   10.20%

公司栏不是必需的。

一个快速的答案是简单地分别计算它们-

ans1 = sum(df$Exchange == "London" & df$Exchange > 0)
ans2 = sum(df$Exchange == "Berlin" & df$Exchange > 0)

但是,使用更通用的方法,您可以进行分组,以获取所需的答案-

library(dplyr)

ans <- df[df$StartToEnd > 0,] %>% group_by(Exchange) %>% summarise(count=n())

希望这就是您所需要的。