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