我不能在 jupyter notebook 中使用基于 01,02,03... 的索引

Posted

技术标签:

【中文标题】我不能在 jupyter notebook 中使用基于 01,02,03... 的索引【英文标题】:I cannot use 01,02,03... based index in jupyter notebook 【发布时间】:2020-07-05 12:42:43 【问题描述】:

用两位数表示索引 (0-9),例如 - 01,02,03... 而不是 1,2,3... 以与 Series(Pandas) 一起使用, 我在 jupyter notebook 中写了这段代码:

students = 01 : 'Ajoy',
           03 : 'Tanzin',
           04 : 'Sakib',
           07 : 'Rahsed',
           10 : 'Shawon'
s = pd.Series(students)
s

我回来了:

File "<ipython-input-50-ae82df390e04>", line 1
    students = 01 : 'Ajoy',
                 ^
SyntaxError: invalid token

但是,当我稍作改动时,开始索引(0-9)只有一位数字,程序执行成功!

students = 1 : 'Ajoy',
           3 : 'Tanzin',
           4 : 'Sakib',
           7 : 'Rahsed',
           10 : 'Shawon'
s = pd.Series(students)
s

输出:

1       Ajoy
3     Tanzin
4      Sakib
7     Rahsed
10    Shawon
dtype: object

为什么我无法使用第一种方法启动索引? 有没有必要这样做? 或者,如何开始表示以 2 位数字开头的索引?

【问题讨论】:

【参考方案1】:

如何用2位数字表示索引:

如果索引是字符串,你可以吗?字符串当然可以是你喜欢的任何东西,pandas 允许这样做:

students = '01' : 'Ajoy',
           '03' : 'Tanzin',
           '04' : 'Sakib',
           '07' : 'Rahsed',
           '10' : 'Shawon'
s = pd.Series(students)
print(s)

输出:

01      Ajoy
03    Tanzin
04     Sakib
07    Rahsed
10    Shawon
dtype: object

为什么不能使用带前导零的 int 字面量:

您可以在lexical analysis of integer-literals 的文档中阅读:

请注意,不允许在非零十进制数中使用前导零。这是为了消除 Python 3.0 之前使用的 C 风格八进制文字的歧义。

简而言之,在 C 语言中(以及在 3.0 版之前的 Python 中),数字文字前的前导零标识八进制文字。 从 Python 3.0 开始,八进制文字由 0o 标识,但为了避免歧义,他们决定根本不允许前导零。

可能令人困惑的示例:

Python 2.7.5 (default, Apr  2 2020, 13:16:51) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 0777 == 511
True
>>> 

【讨论】:

【参考方案2】:

python 3 中不允许使用前导零,您可以参考这个问题 SyntaxError invalid token

【讨论】:

以上是关于我不能在 jupyter notebook 中使用基于 01,02,03... 的索引的主要内容,如果未能解决你的问题,请参考以下文章

解决不能再jupyter notebook中使用tensorflow

为什么我不能在我的Jupyter Notebook(Python 3.6)中导入utils,尽管它已经安装了?

Jupyter Notebook不能自动打开浏览器

从csv更改Jupyter Notebooks上的ticks。

唯一正确的修改Jupyter Notebook默认路径的方法

为啥jupyter notebook代码运行一直没有反应