繁体   English   中英

使用数学方程式创建表格 Pandas Python

[英]Creating a table using mathematical equations Pandas Python

基于下面的字典,我想创建一个新的 DataFrame function 所有独特的股票是 META 和 BABA。 买入和卖出的数量对应于交易品种的买入和卖出。

我还想制作一个专栏来跟踪该股票的Gains/Loss ,因为它将从卖出价值(买入 - 卖出)中减去买入价值,例如(2360.15-2160.36) + (1897-1936.2) ,因为 META 被买入并且在 2 个不同的场合卖了两次,价值就是这样。

最后但并非最不重要的一点是,我想通过等式 (Buy-Sell)/Buy * 100 计算出收益/损失百分比,因此对于 META,该等式将类似于((2360.15-2160.36)/2360.15 + (1897-1936.2)/1897)* 100) 我如何才能修改下表以获得预期的输出?

import pandas as pd 
a = {'Date': {0: '2/4/2022 1:33:40 PM', 1: '2/7/2022 3:09:46 PM', 2: '2/11/2022 9:35:44 AM', 3: '2/14/2022 2:55:33 PM', 4: '2/15/2022 3:55:33 PM', 5:  '2/15/2022 9:15:33 PM'},
     'TransactionType': {0: 'Buy', 1: 'Buy', 2: 'Sell', 3: 'Sell', 4: 'Buy', 5:'Sell'},
     'Symbol': {0: 'META', 1: 'BABA', 2:'META', 3: 'BABA',4: 'META', 5: 'META' },
     'Price': {0: 12.79, 1: 116.16, 2: 12.93, 3: 121.82, 4: 13.55, 5:13.83},
     'Amount': {0: -2366.15, 1: -2439.36, 2: -2160.0, 3: 2558.22, 4:-1897, 5:1936.2}}

print((2360.15-2160.36) + (1897-1936.2))
print(2439.36-2558.22)

print(((2360.15-2160.36)/2360.15 + (1897-1936.2)/1897)* 100)
print(((2439.36-2558.22)/2439.36) * 100)

当前data.table:

在此处输入图像描述

预计 Output:

在此处输入图像描述

(i) 我们可以使用groupby + count + unstack来获取每个“符号”的买卖数量

(ii) 我们可以使用eq + groupby + cumsum创建买卖对; 然后groupby这些对与“符号”分组以获得Gains/Losses和“百分比变化”列:

out = df.groupby(['Symbol','TransactionType'])['TransactionType'].count().unstack().add_prefix('Number of ').add_suffix('s')
g = df.groupby(['Symbol', df['TransactionType'].eq('Buy').groupby(df['Symbol']).cumsum()])['Amount']
out['Gains/Losses'] = g.sum().groupby(level=0).sum()
out['Percentage change'] = g.pct_change().groupby(df['Symbol']).sum()
out = out.reset_index().rename_axis([None], axis=1)

Output:

  Symbol  Number of Buys  Number of Sells  Gains/Losses  Percentage change
0   BABA               1                1        118.86          -2.048726
1   META               2                2       -166.95          -3.933540

请注意,我在此处获得的数字与您预期的 output 中的数字不同,因为您提供的输入 DataFrame 与您在分析中使用的 DataFrame 不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM