我正在通过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
答案 0 :(得分:4)
要设置,值,您需要使用df['column'] = series
。
但是,一旦完成此操作,您可以使用df.column
在将来引用该列,假设它是有效的python名称。 (所以df.column
有效,但df.6column
仍然必须使用df['6column']
进行访问
我认为这里的细微差别在于,当您使用df['column'] = ser
设置内容时,pandas会继续并将其添加到列/执行其他一些操作(我相信通过覆盖__setitem__
中的功能。如果您执行df.column = ser
,就像向使用__setattr__
的任何现有对象添加新字段一样,并且pandas似乎不会覆盖此行为。