我正在使用Jupyter(IPython)笔记本,其中pdb/ipdb运行良好,除了一个问题:如果我在pdb模式下意外运行我的pdb所在的同一个单元格,输出消失,整个笔记本卡住了我无法再运行任何命令.我也试过打断或重启内核; 不起作用.我唯一的选择是关闭笔记本电脑,然后重新启动它.
有没有其他人遇到这个问题/知道解决方案?我每次犯这个错误都要重新启动笔记本电脑非常烦人.
以下是问题的屏幕截图.下面我按照预期的pdb模式:
如果我(不小心)运行我的pdb所在的同一个单元格,那么笔记本会在尝试运行该单元格时遇到困难,并且不会运行任何其他单元格(如下面的单元格).
在 Windows 上使用 Python 3.7.3 (Anaconda),点击 tab 会导致以下回溯:
Readline internal error
Traceback (most recent call last):
File "C:\...\anaconda3\lib\site-packages\pyreadline\console\console.py", line 768, in hook_wrapper_23
res = ensure_str(readline_hook(prompt))
File "C:\...\anaconda3\lib\site-packages\pyreadline\rlmain.py", line 571, in readline
self._readline_from_keyboard()
File "C:\...\anaconda3\lib\site-packages\pyreadline\rlmain.py", line 536, in _readline_from_keyboard
if self._readline_from_keyboard_poll():
File "C:\...\anaconda3\lib\site-packages\pyreadline\rlmain.py", line 556, in _readline_from_keyboard_poll
result = self.mode.process_keyevent(event.keyinfo)
File "C:\...\anaconda3\lib\site-packages\pyreadline\modes\emacs.py", line 243, in process_keyevent
r = self.process_keyevent_queue[-1](keyinfo)
File "C:\...\anaconda3\lib\site-packages\pyreadline\modes\emacs.py", line 286, in _process_keyevent
r = dispatch_func(keyinfo)
File "C:\...\anaconda3\lib\site-packages\pyreadline\modes\basemode.py", line 257, in complete
completions = self._get_completions()
File "C:\...\anaconda3\lib\site-packages\pyreadline\modes\basemode.py", line 200, …Run Code Online (Sandbox Code Playgroud) 假设我创建了一个空数据框:
df = pd.DataFrame()
Run Code Online (Sandbox Code Playgroud)
我通过df.append()以下方式添加了一个字典:
df.append({'A': 'foo', 'B': 'bar'}, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
这给了我预期的结果
A B
0 foo bar
Run Code Online (Sandbox Code Playgroud)
但是,如果 dict 值中有任何布尔值,即,
df.append({'A': True, 'B': False}, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
布尔值转换为浮点数。
A B
0 1.0 0.0
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况/如何防止这种转换?如果可能的话,我宁愿不对完成的数据帧做任何事情(即,不喜欢将浮点数强制转换回布尔值)。
编辑:找到了我自己的解决方案,但仍然想知道为什么会发生上述行为。我的解决办法是:
df.append(pd.DataFrame.from_dict({'A': True, 'B': False}, orient='index').T, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
这给出了所需的
A B
0 True False
Run Code Online (Sandbox Code Playgroud) 我有大量 Excel 文件,每个文件都有一列,其中数字格式为文本。Excel 给出错误“此单元格中的数字格式为文本或前面带有撇号” - 请参阅第三列,其中单元格有一个绿色三角形。
我的目标是在 Pandas 中打开所有这些文件,而不必手动打开每个文件并将列转换为数字。但是,pd.read_excel() 失败并出现以下xlrd错误:
XLRDError: ZIP file contents not a known type of workbook
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,当我xlrd直接使用时:wb = xlrd.open_workbook(filename)我得到同样的错误。
我还尝试了 openpyxl: wb = openpyxl.load_workbook(filename),它给了我这个:
KeyError: "There is no item named 'xl/_rels/workbook.xml.rels' in the archive"
Run Code Online (Sandbox Code Playgroud)
我确认,如果我手动将列转换为 Excel 中的数字并重新保存工作簿,则 pandas (xlrd) 和 openpyxl 都可以打开该文件。
有人有什么想法吗?