我想在Jupyter中%timeit
一个函数。在
df["One"] = range(1,1001)
df["Two"] = range(2000, 3000)
df["Three"] = range(3000, 4000)
df.set_index(["One"], drop = True, inplace = True)
当我运行test_iterrows(df)
时,我得到:
Two Three
One
1 2000 Even
2 2001 Odd
3 2002 Even
4 2003 Odd
5 2004 Even
很好。功能正常。但是,当我%timeit test_iterrows(df)
时,我得到一个错误:
<ipython-input-29-326f4a0f49ee> in test_iterrows(df)
13 def test_iterrows(df):
14 for index, row in df.iterrows():
---> 15 if (row["Three"] & 1 == 0):
16 df.loc[index, "Three"] = "Even"
17 else:
TypeError: unsupported operand type(s) for &: 'str' and 'int'
这是怎么回事?我的(可能是错误的)解释是,我显然不能%timeit
包含%
的函数。在
这是怎么回事?在
%timeit
重复执行语句,并且函数将df
更改到位。请注意,当我只调用函数两次时,会出现相同的异常:您可能应该传入一个
^{pr2}$copy
,尽管这会稍微“偏移”时间,因为它也会乘以复制它所需的时间:另外,我也不太确定
gc.collect()
调用在那里应该做什么,因为gc.collect
只是垃圾收集对象,这些对象由于引用循环而不能被正常方式丢弃。在相关问题 更多 >
编程相关推荐