为什么有些命令相对于前面的命令会导致错误?

Why some commands cause an error relative to the preceding command?

这是一个 pandas 问题。

尝试在 Jupyter Notebook 中复制此内容:

In [1]: df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
        index=['cobra', 'viper', 'sidewinder'],
        columns=['max_speed', 'shield'])

        df
In [2]: df.pop('shield') # Return as series.
In [3]: pd.DataFrame(df.pop('shield')) # Return as DataFrame.

然后逆序为

In[1]
In[3]
In[2]

为什么 3rd Out[-] 总是导致错误?

我经常遇到这种错误。这是缓存问题吗?冗余?出现这种错误的原因是什么?

我认为您的代码产生了预期的错误:

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
        index=['cobra', 'viper', 'sidewinder'],
        columns=['max_speed', 'shield'])

此处 DataFrame.pop 从原始 Dataframe 中提取列 shield,创建系列并从原始数据框中删除:

a = df.pop('shield') # Return as series.
print (a)
cobra         2
viper         5
sidewinder    8
Name: shield, dtype: int64

因此 df 中没有列在 pop 之后:

print (df)
            max_speed
cobra               1
viper               4
sidewinder          7

获取列 shield 失败,因为 df:

中不存在
b = pd.DataFrame(df.pop('shield')) # Return as DataFrame.
print (b)
KeyError: 'shield'

pop 在返回数据帧时从数据框中删除系列。

无论如何都不能连续调用两次

在第 2 行中,您正在删除屏蔽
第三留置权你又流行了 删除 2nd,代码将按预期工作

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
        index=['cobra', 'viper', 'sidewinder'],
        columns=['max_speed', 'shield'])


pd.DataFrame(df.pop('shield'))