使用Python计算按比例所有权

时间:2019-03-08 22:34:55

标签: python pandas

我对Python来说还比较陌生,所以请原谅我的问题,如果它相对基本(无法在线找到任何有用的东西)。

我有一个包含3列的数据框,基金|投资者|数量,并且需要在我的数据框中插入新列来计算每个投资者的按比例所有权。

我认为遍历数据帧是执行此操作的最佳方法,但是会遇到问题。

enter image description here

3 个答案:

答案 0 :(得分:0)

如果您可以发布代码,这将非常容易,但是作为参考,您可以像这样使用

df['D'] = df['A'] + df['B'] + df['C']

在现有代码中尝试上述方法。让我知道是否有帮助。

答案 1 :(得分:0)

尝试:

df['percent'] = df['QTY'] / df.groupby('Fund')['QTY'].transform('sum') * 100

答案 2 :(得分:0)

请参见this question。 因此,您可以分组并申请:

In [1]: df = pd.DataFrame([
   ...:     ['Fund 1','Investor A', 10],
   ...:     ['Fund 1','Investor B', 20],
   ...:     ['Fund 2','Investor A', 30],
   ...:     ['Fund 2','Investor B', 40],
   ...:     ['Fund 2','Investor C', 30],
   ...:     ['Fund 3','Investor A', 50],
   ...:     ['Fund 3','Investor B', 50],
   ...: ], columns=['Fund','Investor', 'Qty'])
   ...:

In [2]: df['wanted'] = df.groupby('Fund').Qty.apply(lambda x: x/x.sum())

In [3]: df
Out[3]:
     Fund    Investor  Qty    wanted
0  Fund 1  Investor A   10  0.333333
1  Fund 1  Investor B   20  0.666667
2  Fund 2  Investor A   30  0.300000
3  Fund 2  Investor B   40  0.400000
4  Fund 2  Investor C   30  0.300000
5  Fund 3  Investor A   50  0.500000
6  Fund 3  Investor B   50  0.500000

对百分比的最后一步对您来说很容易。