This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
                            
                        
                    
                
                                7年前关闭。
            
                    
我正在尝试以.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浮点数,以便我可以区分它们?

我想匹配c,c1中的日期,以减去卖方在给定日期的所有i的卖出价格:S_i-B_i,然后求和并为每个日期返回该值。我只想在日期匹配时才以h-a1的价格为差。

一些样本数据:

日期时间价格磁信号

1/3/2007 930 1422.8
2007年1月3日940 1423.2 0
1/3/2007 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秒

1/3/2007 1300 1426 0
1/3/2007 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
1/3/2007 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
1/3/2007 1440 1413.5 0
1/3/2007 1450 1410 0
1/3/2007 1500 1407.2 -1 B

2007年1/3/1510 1410.2 1秒

2007年1/3/1520 1409.5 -1 B

2007年1/3/1530 1410.5 1秒

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

2007年1/3/1610 1415.5 1秒

2007年1/3/1620 1414 -1 B

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

压缩结果,例如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本机数据结构中。
在这里,价格应该已经正确读取为DataFrame中的浮点数。

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

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/

10-13 01:30