gpt4 book ai didi

python - zip(,) 字符串要 float 吗?

转载 作者:行者123 更新时间:2023-12-01 05:51:28 25 4
gpt4 key购买 nike

我正在尝试计算每日盈亏,其中 .csv 中的 10 分钟价格(每个日期有 42 次)——其中一天内的买入数量和卖出数量可能不相等。如果它们不相等,程序应使用该唯一日期 df["price"][t] 的收盘价来减去(从/按),具体取决于是买入还是卖出。

import pandas as pd

df=pd.read_csv("file.csv", names="date time price mag signal".split())

s=df["signal"]=="S"
b=df["signal"]=="B"
ns=df["signal"]!="S"
nb=df["signal"]!="B"
t=df["time"]=="1620"

a1=df["price"][buy|(nb & t)]
b1=df["date"][buy|(nb & t)]

h=df["price"][s|(ns & t)]
g=df["date"][s|(ns & t)]


c1=zip(b1,a1)
c=zip(g,h)

c1、c 是包含买入和卖出数量及其各自日期的列表。这里的问题是 c1 和 c 是字符串——一旦它们被压缩;因此不能被减去。是否可以制作 a1, h float 以便我可以区分它们?

我想要匹配 c、c1 中的日期,以减去给定日期的所有 i 的卖出-买入价格:S_i-B_i,然后对每个日期的所有值求和并返回该值。仅当日期匹配时,我才想在 h-a1 上调整价格。

一些示例数据:

日期时间价格磁力信号

2007年1月3日 930 1422.8
2007/1/3 940 1423.2 0
2007/1/3 950 1422.8 0
2007/1/3 1000 1420.5 0
2007年1月3日 1010 1422.8 0
2007 年 1 月 3 日 1020 1426.2 1 秒

。。.

2007年1月3日 1230 1424.2 -1 B

2007年1月3日 1240 1424.8 0
2007/1/3 1250 1425.8 1 S

2007年1月3日 1300 1426 0
2007年1月3日 1310 1425 0
2007年1月3日 1320 1423.5 -1 B

2007年1月3日 1330 1421.8 0
2007年1月3日 1340 1421.5 0
2007年1月3日 1350 1420.5 0
2007年1月3日 1400 1421 0
2007 年 1 月 3 日 1410 1417.2 -1 B

2007年1月3日 1420 1412.8 -1 B

2007年1月3日 1430 1414.8 0
2007年1月3日 1440 1413.5 0
2007年1月3日 1450 1410 0
2007年1月3日 1500 1407.2 -1 B

2007/1/3 1510 1410.2 1 S

2007年1月3日 1520 1409.5 -1 B

2007年1月3日 1530 1410.5 1 S

2007年1月3日 1540 1412.5 0
...

2007/1/3 1610 1415.5 1 S

2007年1月3日 1620 1414 -1 B

2007/1/4 930 1412.2 0
2007/1/4 940 1411 0
2007/1/4 950 1413 0
2007年1月4日 1000 1412.2 0
2007/1/4 1010 1407.2 -1 B

zip 的结果,例如 c1 应该看​​起来像这样:

[('1/3/2007', '1424.2'),
('1/3/2007', '1423.5'),
('1/3/2007', '1417.2'),
('1/3/2007', '1412.8'),
('1/3/2007', '1407.2'),
('1/3/2007', '1409.5'),
('1/3/2007', '1414'),

etc - all dates in between

('8/30/2012','1324')]

非常感谢。

最佳答案

不要使用zip,您可以将数据保存在pandas native 数据结构中。
这里的价格应该在 DataFrame 中正确读取为 float 。

您可以执行类似 sub 的操作然后groupby '日期':

df['dif'] = a1.sub(h, fill_value=0)
g = df.groubpy('date')['dif'].sum()

.

请注意,您可以使用 read_csv关键字 parse_dates 作为日期时间对象:

df = pd.read_csv("file.csv",
names="date time price mag signal".split()
parse_dates=[['date','time']])

关于python - zip(,) 字符串要 float 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14132216/

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