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

时间:2014-05-08 15:47:53

标签: 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

df.column:

In [8]:

df.column1
Out[8]:
0    a
1    a
2    a
3    b
4    c
Name: column1, dtype: object

DF [ '列']:

In [9]:

df['column1']
Out[9]:
0    a
1    a
2    a
3    b
4    c
Name: column1, dtype: object

1 个答案:

答案 0 :(得分:4)

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

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

我认为这里的细微差别在于,当您使用df['column'] = ser设置内容时,pandas会继续并将其添加到列/执行其他一些操作(我相信通过覆盖__setitem__中的功能。如果您执行df.column = ser,就像向使用__setattr__的任何现有对象添加新字段一样,并且pandas似乎不会覆盖此行为。