我正在从数据访问时间戳。如果多个时间戳具有相同的值,则更改它们。在这种情况下,如果两个相同,则将2添加到第二个时间戳。如果三个相同,则将2加到第二,再将4加到第三,依此类推。我收到警告/anaconda/lib/python3.6/site-packages/ipykernel/ main .py:8:SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy我的问题是:执行任务花费的时间太长。我想知道是否有一些特定的方法可以在大熊猫中以更精确的方式执行任务。请考虑我是熊猫新手。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条经验 获得超15个赞
通常,永远不要使用该for i in range(len(collection))构造来迭代Python中的集合,因为您可以简单地使用for item in collection。
特别是在大熊猫中,您几乎不必迭代序列,如果这样做,则永远不要修改要迭代的对象。根据数据类型,迭代器可能会返回一个副本,对其进行写入将无效。相反,您应该选择对整个阵列进行操作。
大熊猫重写代码的方法是
dftime = df.time
dftime[dftime == dftime.shift()] += 2
dftime[dftime < dftime.shift()] += 2
添加回答
举报
0/150
提交
取消