python - 使用 pandas groupby 功能查找盈利投资的百分比

标签 python pandas dataframe

我有一个像这样的 pandas DataFrame;它显示了股票投资的历史。 Profit栏中,1表示盈利,0表示亏损。

Stock  Year   Profit  Count
 AAPL  2012    0       23
 AAPL  2012    1       19
 AAPL  2013    0       20
 AAPL  2013    1       10
GOOG   2012    0       26
GOOG   2012    1       20
GOOG   2013    0       23
GOOG   2013    1       11

我必须找出盈利投资的百分比:

Stock  Year   Profit  CountPercent
 AAPL  2012    1       38.77
 AAPL  2013    1       33.33
GOOG   2012    1       43.47
GOOG   2013    1       32.35

我尝试使用 this post 中的方法 但它显示 'TypeError: Join on level between two MultiIndex objects is ambiguous'

最佳答案

我已将您的数据加载到名为“股票”的数据框中。

# Get the count of profitable trades, indexed by stock+year:
count_profitable = stocks[ stocks['Profit']==1 ].set_index(['Stock','Year']).Count
# Get the count of all trades, indexed by stock + year:
count_all        = stocks.groupby(['Stock','Year']).Count.sum()
# Render nice percentages
pandas.options.display.float_format = '{:.2f}%'.format 
(count_profitable/count_all) * 100

这将产生:

Stock  Year
AAPL   2012   45.24%
       2013   33.33%
GOOG   2012   43.48%
       2013   32.35%
Name: Count, dtype: float64

关于python - 使用 pandas groupby 功能查找盈利投资的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058664/

相关文章:

python - 如果我使用函数范式对序列进行排序,那么制作副本不是浪费吗?

python - 使用 ID 列从摘要列中减去详细列中的所有值,将它们分组在一起 - PANDAS

python - Pandas 将 df.count() 结果的最后 n 行求和为一行

python - 将 Pandas 数据框中的列移动到大型数据框中的最后一列的最佳方法

python - DatetimeIndex 阻止 DataFrame 从装饰函数返回

r - 根据列名将行添加到数据框并将 NA 添加到空列

python - 如何将 angular 4 与 Django 集成

python - 处理多个Try/Except语句

python - PyQt6 的 Qt 模块替代品

python - Pandas dataframe 使用 pd.concat 将字符串替换为 NaN