在熊猫中,df ['column']和df.column有什么区别?

Ant*_*ton 6 python pandas

我正在通过Pandas进行数据分析和学习.然而,有一件事情不断涌现.这本书通常是指数据框的列,df['column']但有时没有书中使用的解释df.column.

我不明白两者之间的区别.任何帮助,将不胜感激.

下面是代码,展示了我在说什么:

In [5]:

import pandas as pd

data = {'column1': ['a', 'a', 'a', 'b', 'c'], 
        'column2': [1, 4, 2, 5, 3]}
df = pd.DataFrame(data, columns = ['column1', 'column2'])
df

Out[5]:
column1 column2
0    a   1
1    a   4
2    a   2
3    b   5
4    c   3
5 rows × 2 columns
Run Code Online (Sandbox Code Playgroud)

df.column:

In [8]:

df.column1
Out[8]:
0    a
1    a
2    a
3    b
4    c
Name: column1, dtype: object
Run Code Online (Sandbox Code Playgroud)

DF [ '列']:

In [9]:

df['column1']
Out[9]:
0    a
1    a
2    a
3    b
4    c
Name: column1, dtype: object
Run Code Online (Sandbox Code Playgroud)

acu*_*ner 10

对于设置,值,您需要使用df['column'] = series.

但是,一旦完成,您可以在将来使用 引用该列df.column,假设它是一个有效的 python 名称。(如此df.column有效,但df.6column仍必须使用 访问df['6column']

我觉得这里的细微差别是,当你设置一些与df['column'] = ser,熊猫前进并把它添加到列/做一些其他的东西(我相信通过重写的功能__setitem__。如果你这样做df.column = ser,它就像增加一个新的领域,以任何使用__setattr__, 和 pandas 的现有对象似乎没有覆盖此行为。

  • 此外,您可以在列名中包含空格,例如 ``df['column foo bar']``,而使用 ``df.column foo bar`` 是一个错误 (8认同)