gpt4 book ai didi

python - 在 Pandas 数据框中创建 ID 列

转载 作者:行者123 更新时间:2023-12-03 23:02:17 24 4
gpt4 key购买 nike

我有一个包含交易日志的数据框。我的问题是我没有任何 ID 来匹配股票的买卖。股票可以多次交易,我想有一个 ID 来匹配每笔完成的交易。
我的原始数据帧是一个带有时间戳的顺序时间序列数据帧。下面的例子说明了我的问题,我需要按顺序匹配和 ID 交易的股票。
非常简单的例子:

df1 = pd.DataFrame({'stock': ['A', 'B', 'C', 'A','C', 'A', 'A'],
'deal': ['buy', 'buy', 'buy', 'sell','sell', 'buy', 'sell']})
df1
Out[84]:
stock deal
0 A buy
1 B buy
2 C buy
3 A sell
4 C sell
5 A buy
6 A sell

这是我想要的输出:
df1 = pd.DataFrame({'stock': ['A', 'B', 'C', 'A','C', 'A', 'A'],
'deal': ['buy', 'buy', 'buy', 'sell','sell', 'buy', 'sell'],
'ID': [1, 2, 3, 1,3, 4, 4]})


df1
Out[82]:
stock deal ID
0 A buy 1
1 B buy 2
2 C buy 3
3 A sell 1
4 C sell 3
5 A buy 4
6 A sell 4
有任何想法吗?

最佳答案

尝试这个:

m = df1['deal'] == 'buy'
df1['ID'] = m.cumsum().where(m)
df1['ID'] = df1.groupby('stock')['ID'].ffill()

df1
输出:
  stock  deal   ID
0 A buy 1.0
1 B buy 2.0
2 C buy 3.0
3 A sell 1.0
4 C sell 3.0
5 A buy 4.0
6 A sell 4.0
细节:
  • 创建一个 bool 系列 True,其中交易等于“购买”
  • Cumsum 并分配给“ID”以购买记录
  • 使用 groupby 和 ffill 将 'ID' 分配给下一个 'sell' 记录购买
    '股票'
  • 关于python - 在 Pandas 数据框中创建 ID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64865618/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com