我有一個需要很長時間才能運行的python程序,很可能是因爲我在使用循環,我希望能夠在一節中使用Pandas或Numpy來獲得一些幫助。加快速度。看起來第一個FOR循環可以用熊貓或numpy進行一點優化。也就是說,我並不是完全熟悉熊貓或numpy的錯綜複雜,以達到這個循環的目的。任何幫助表示讚賞,請讓我知道如果有任何問題,謝謝!優化Python代碼 - 熊貓/ Numpy的使用
df = data below
df2 = pandas.DataFrame()
for i in df.index:
if df.V[i]>1:
for f in range(0,df.V[i]):
df2 = df2.append(df.loc[i],ignore_index=True)
elif df.V[i]==1:
df2 = df2.append(df.loc[i],ignore_index=True)
df2.V = 1
df2['Grouper']=""
bv=10
y=bv
x=len(df2)
for d in range(0,x,y):
z = d+y
df2['Grouper'][d:z]=d
df3 = df2.groupby('Grouper').agg({'Date_Time':'first','L1':'last','H':'max','L2':'min','O':'first'})
df3 = df3.reset_index(drop=True)
df3 = df3[['Date_Time','O','H','L1','L2']]
這是數據的樣本,我這個程序使用(DF):
Date_Time O H L1 L2 V
0 2016-10-13 17:00:00 50.39 50.39 50.39 50.39 1
1 2016-10-13 17:00:02 50.39 50.39 50.39 50.39 27
2 2016-10-13 17:00:04 50.38 50.38 50.38 50.38 1
3 2016-10-13 17:00:09 50.38 50.38 50.38 50.38 1
4 2016-10-13 17:00:10 50.38 50.38 50.38 50.38 6
5 2016-10-13 17:00:14 50.38 50.38 50.38 50.38 19
6 2016-10-13 17:00:15 50.38 50.38 50.38 50.38 3
7 2016-10-13 17:00:20 50.37 50.38 50.37 50.38 5
8 2016-10-13 17:00:21 50.38 50.38 50.38 50.38 2
9 2016-10-13 17:00:22 50.38 50.38 50.37 50.37 3
您能否包含原始數據和預期數據?給定的數據框將不起作用,因爲具有兩個具有相同名稱的列(應該不惜一切代價避免)會導致groupby崩潰)。如果你用文字解釋你想要達到的目標,也會有所幫助,因爲有可能嘗試不同的方法。 –
@KenWei我應用了您推薦的更改。目標是通過'V'列來分解數據,所以df中的第2行將在df2中具有27個相同數據的條目。然後,我重新組合df2中的數據以基於'V'列中的條目總和創建桶。基本上試圖創建恆定的音量條。 – BROB1