使用Python计算按比例的所有权

使用Python计算按比例的所有权,python,pandas,Python,Pandas,我对Python比较陌生,所以请原谅我的问题,如果它比较基本的话(我在网上找不到任何有用的东西) 我有一个数据框,它有3列,基金|投资者|数量,需要在我的数据框中插入一个新列,计算每个投资者按比例的所有权 我认为通过数据帧循环是最好的方法,但我有问题 如果您可以发布您的代码,这将非常容易,但作为参考,您可以使用以下内容: df['D'] = df['A'] + df['B'] + df['C'] 在现有代码中尝试上述方法。如果有帮助,请告诉我。如果您可以发布您的代码,这将非常容易,但作为参考,

我对Python比较陌生,所以请原谅我的问题,如果它比较基本的话(我在网上找不到任何有用的东西)

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

我认为通过数据帧循环是最好的方法,但我有问题


如果您可以发布您的代码,这将非常容易,但作为参考,您可以使用以下内容:

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

在现有代码中尝试上述方法。如果有帮助,请告诉我。

如果您可以发布您的代码,这将非常容易,但作为参考,您可以使用以下内容:

df['D'] = df['A'] + df['B'] + df['C']
在现有代码中尝试上述方法。如果有帮助,请告诉我。

试试:

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

看。 因此,您可以分组并应用:

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
实现百分比的最后一步对您来说很容易。

请参阅。 因此,您可以分组并应用:

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

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

欢迎!你能说出一些实际问题吗?:)第一个版本非常完美,请不要包含代码的图片!您可以通过工具栏格式化,这里有一个代码按钮欢迎!你能说出一些实际问题吗?:)第一个版本非常完美,请不要包含代码的图片!您可以通过工具栏设置格式,这里有一个代码按钮供您填写答案,并对重复内容表示歉意。这正如预期的那样有效。我确实收到了一条信息,“89:SettingWithCopyWarning”,我可能需要查看一下,不客气!有关警告信息,请参见示例。如果这不能帮助你自由地提出一个新问题:-)谢谢你的回答,并为重复而道歉。这正如预期的那样有效。我确实收到了一条信息,“89:SettingWithCopyWarning”,我可能需要查看一下,不客气!有关警告信息,请参见示例。如果这不能帮助你自由地提出一个新问题:-)