data ['column_name']与data.column_name之间是否有重大区别

时间:2018-07-14 01:37:39

标签: pandas data-science data-analysis

例如,我正在研究这样的示例:

train['Datetime'] = pd.to_datetime(train.Datetime,format='%d-%m-%Y %H:%M') 

如果我运行train ['Datetime']。head()和train.Datetime.head(),结果是相同的。那么,为什么要使用一个呢?还是为什么同时使用两者?

2 个答案:

答案 0 :(得分:2)

我都用过。我认为最重要的考虑因素是您希望代码的可持续性和灵活性。对于快速检查和“命令式编程”(如Jupyter Notebooks),您可以使用最小速记:

train.Datetime.head()

但是很快您将意识到,当您要传递的变量可能来自UI或其他来源或有效地调试代码时,像这样的完整表示法:

train['Datetime'].head()

具有主要优点,并且在编程时早点养成习惯是个好习惯。

首先,在用于编辑代码的集成开发环境(IDE)中,将突出显示字符串“ Datetime”,以提醒您它是代码中的“硬依赖性”。而Datetime(无引号,只有。)不会显示突出显示。

这听起来似乎没什么大不了,但是当您查看100行(或更多)代码行时,查看在何处“硬编码”一个变量名很重要。

[]表示法的另一个主要优点是您可以将字符串变量传递给该表示法。

import pandas as pd
import numpy as np

# make some data
n=100
df = pd.DataFrame({
    'Fruit': np.random.choice(['Apple', 'Orange', 'Grape'], n),
    'Animal': np.random.choice(['Cat', 'Dog', 'Fish'], n),
    'x1': np.random.randn(n)})

# some name from a user interface.  It could be "Fruit" or "Animal"
group = "Animal"

# use that string variable in an expression (in this case,  as a group by)
df.groupby(group).agg(['count', 'mean', 'std'])

在这里,即使在堆栈溢出中,您也可以在df.groupby()中看到没有硬编码的字符串(红色文本)。用户输入和执行操作的代码之间的这种分离是微妙的,但非常重要。

祝你好运!

答案 1 :(得分:1)

当列名包含空格时会出现问题,在这种情况下必须建立索引。