我有一个df
包含两栏的数据框,股票代码和交易结果。
我想创建一个新的数据框,其中包含三列-股票行情,交易数量,获利交易。
我已经使用groupby
和count
函数来获得交易数列,这很好用。
我的问题是第三栏Profitable Trades,其中交易结果> 0,但我还没有找到解决这种情况的方法。
创建DF(可以正常工作)
df = pd.DataFrame(
{'Ticker': ['[BTC]','[ETH]','[LTC]','[BTC]','[ETH]',
'[LTC]','[BTC]','[ETH]','[LTC]'],
'Trade Results': [5,10,5,-5,-10,-5,5,10,5]}
)
股票代号 | 交易结果 |
---|---|
比特币 | 5 |
ETH | 10 |
LTC | 5 |
比特币 | -5 |
ETH | -10 |
LTC | -5 |
比特币 | 5 |
ETH | 10 |
LTC | 5 |
对股票行情进行分组并计数(正常工作)
df_Grouped = df.groupby(['Ticker']).count()
股票代号 | 数数 |
---|---|
比特币 | 3 |
ETH | 3 |
LTC | 3 |
条件列(我的问题)
这是我无法弄清楚的部分,我的最新尝试在下面,但对有利润的列返回NaN。
df_Grouped['Profitable'] = df.groupby(['Trade Result'] > 0).count()
期望的输出
股票代号 | 数数 | 有利可图 |
---|---|---|
比特币 | 3 | 2个 |
ETH | 3 | 2个 |
LTC | 3 | 2个 |
您可以这样做:
df_Grouped = df.groupby(['Ticker']).agg({'Trade Results': [('Count', 'count'), ('Profitable', lambda x: len(x[x>0]))]}).reset_index()
输出:
Count Profitable
0 BTC 3 2
1 ETH 3 2
2 LTC 3 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句