我有一個(gè) df 定義,我正在成功地運(yùn)行操作。我想計(jì)算迭代for循環(huán)和矢量化操作之間的差異。我已經(jīng)閱讀了有關(guān)如何使用 timeit 的各種示例,但是當(dāng)我嘗試使用它們時(shí),出現(xiàn)以下錯(cuò)誤。我究竟做錯(cuò)了什么?進(jìn)口:import h5pyimport pandas as pdimport timeit這個(gè)循環(huán)有效:for u in df['owner'].unique(): print(u, ': ', len(df[(df['owner'] == u)]), sep = '')但是當(dāng)我嘗試這樣計(jì)時(shí)時(shí)......:s = """\for u in df['owner'].unique(): print(u, ': ', len(df[(df['owner'] == u)]), sep = '')"""time_iter_1_1_1 = timeit.timeit(s)...它產(chǎn)生這個(gè)錯(cuò)誤:---------------------------------------------------------------------------NameError Traceback (most recent call last)<ipython-input-34-7526e96d565c> in <module>() 3 # print(u, ': ', len(df[(df['owner'] == u)]), sep = '')""") 4 ----> 5 time_iter_1_1_1 = timeit.timeit(s)~\Anaconda2\envs\py36\lib\timeit.py in timeit(stmt, setup, timer, number, globals) 231 number=default_number, globals=None): 232 """Convenience function to create Timer object and call timeit method."""--> 233 return Timer(stmt, setup, timer, globals).timeit(number) 234 235 def repeat(stmt="pass", setup="pass", timer=default_timer,~\Anaconda2\envs\py36\lib\timeit.py in timeit(self, number) 176 gc.disable() 177 try:--> 178 timing = self.inner(it, self.timer) 179 finally: 180 if gcold:~\Anaconda2\envs\py36\lib\timeit.py in inner(_it, _timer)NameError: name 'df' is not defined當(dāng)我嘗試這個(gè)時(shí)......:time_iter_1_1_1 = timeit.timeit("""for u in df['owner'].unique(): print(u, ': ', len(df[(df['owner'] == u)]), sep = '')""")...我收到此錯(cuò)誤:ERROR:root:An unexpected error occurred while tokenizing inputThe following traceback may be corrupted or invalidThe error message is: ('EOF in multi-line string', (1, 57))...NameError: name 'df' is not defineddf 已定義并正常工作。我怎樣才能解決這個(gè)問(wèn)題?
1 回答

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
有兩種選擇,要么
傳遞一個(gè)globals允許timeit解析名稱的參數(shù),
df = pd.DataFrame(...)
timeit.timeit(statement, globals={'df': df}) # globals=globals()
...或者,傳遞一個(gè)為您setup設(shè)置的字符串參數(shù)df。
timeit.timeit(statement, setup='import pandas as pd; df = pd.DataFrame(...)')
添加回答
舉報(bào)
0/150
提交
取消