我正在從數(shù)據(jù)訪問時間戳。如果多個時間戳具有相同的值,則更改它們。在這種情況下,如果兩個相同,則將2添加到第二個時間戳。如果三個相同,則將2加到第二,再將4加到第三,依此類推。我收到警告/anaconda/lib/python3.6/site-packages/ipykernel/ main .py:8:SettingWithCopyWarning:試圖在DataFrame的切片副本上設(shè)置一個值請參閱文檔中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy我的問題是:執(zhí)行任務(wù)花費的時間太長。我想知道是否有一些特定的方法可以在大熊貓中以更精確的方式執(zhí)行任務(wù)。請考慮我是熊貓新手。dftime =df.time for i in range (len(dftime)): if i!=0: if dftime[i]==dftime[i-1]: dftime[i]=dftime[i]+2 if dftime[i]<dftime[i-1]: dftime[i]=dftime[i-1]+2
1 回答

紫衣仙女
TA貢獻1839條經(jīng)驗 獲得超15個贊
通常,永遠(yuǎn)不要使用該for i in range(len(collection))構(gòu)造來迭代Python中的集合,因為您可以簡單地使用for item in collection。
特別是在大熊貓中,您幾乎不必迭代序列,如果這樣做,則永遠(yuǎn)不要修改要迭代的對象。根據(jù)數(shù)據(jù)類型,迭代器可能會返回一個副本,對其進行寫入將無效。相反,您應(yīng)該選擇對整個陣列進行操作。
大熊貓重寫代碼的方法是
dftime = df.time
dftime[dftime == dftime.shift()] += 2
dftime[dftime < dftime.shift()] += 2
添加回答
舉報
0/150
提交
取消