gpt4 book ai didi

python - 在 Pandas 数据框中每个日期只有 1 条记录

转载 作者:行者123 更新时间:2023-12-04 01:13:44 25 4
gpt4 key购买 nike

背景:在 mplfinance 中,我希望能够在同一柱中绘制多个交易标记。据我了解,目前您只能将 1 个(或 1 个买入和 1 个卖出)添加到同一柱。除非我创建另一个系列,否则我不能在同一柱的同一侧再进行 2 笔交易。

这是一个例子:

d = {'TradeDate': ['2018-10-15 06:00:00',
'2018-10-29 03:00:00',
'2018-10-29 03:00:00',
'2018-10-29 06:00:00',
'2018-11-15 05:00:00',
'2018-11-15 05:00:00',
'2018-11-15 05:00:00'],
'Price': [1.1596,
1.1433,
1.13926,
1.14015,
1.1413,
1.1400,
1.1403]}
df = pd.DataFrame(data=d)

df

    TradeDate           Price
0 2018-10-15 06:00:00 1.15960
1 2018-10-29 03:00:00 1.14330
2 2018-10-29 03:00:00 1.13926
3 2018-10-29 06:00:00 1.14015
4 2018-11-15 05:00:00 1.14130
5 2018-11-15 05:00:00 1.14000
6 2018-11-15 05:00:00 1.14030

如您所见,有 2 个日期时间的多笔交易。现在我想应用一条规则,说“如果每个日期有超过 1 笔交易(此处:价格),则为额外价格创建一个新列,继续这样做,直到同一 TradeDate(日期时间)的所有价格都已跨列分布,并且所有日期时间都是唯一的”。因此,同一日期的价格越多,需要的额外列就越多。

最终结果看起来像这样(我手动骗取了这些数据):

    TradeDate           Price   Price2  Price3
0 2018-10-15 06:00:00 1.15960 NaN NaN
1 2018-10-29 03:00:00 1.14330 1.13926 NaN
3 2018-10-29 06:00:00 1.14015 NaN NaN
4 2018-11-15 05:00:00 1.14130 1.14000 1.1403

最佳答案

诀窍是为每个唯一的日期时间添加一个增量计数器。这样,如果多次遇到日期时间,则此计数器会增加。

为此,我们按交易日期分组,并获得给定交易日期的重复交易日期的累计计数。然后我将这个值加 1,这样我们的计数从 1 开始,而不是 0。

df["TradeDate_count"] = df.groupby("TradeDate").cumcount() + 1

print(df)
TradeDate Price TradeDate_count
0 2018-10-15 06:00:00 1.15960 1
1 2018-10-29 03:00:00 1.14330 1
2 2018-10-29 03:00:00 1.13926 2
3 2018-10-29 06:00:00 1.14015 1
4 2018-11-15 05:00:00 1.14130 1
5 2018-11-15 05:00:00 1.14000 2
6 2018-11-15 05:00:00 1.14030 3

现在我们已经添加了该列,我们可以简单地进行调整以获得您想要的结果。请注意,我添加了一个 rename(...) 方法,只是为了将“价格”添加到我们的列名称中。我还使用了 rename_axis 方法,因为我们的数据透视表向我们返回了一些用户难以查看的列的命名索引,因此我认为最好将其删除。

new_df = (df.pivot(index="TradeDate", columns="TradeDate_count", values="Price")
.rename(columns="price{}".format)
.rename_axis(columns=None))

price1 price2 price3
TradeDate
2018-10-15 06:00:00 1.15960 NaN NaN
2018-10-29 03:00:00 1.14330 1.13926 NaN
2018-10-29 06:00:00 1.14015 NaN NaN
2018-11-15 05:00:00 1.14130 1.14000 1.1403

关于python - 在 Pandas 数据框中每个日期只有 1 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64036014/

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