熊猫:从数据框中选择列

时间:2015-07-17 13:54:44

标签: python pandas

熊猫初学者在这里。我想要返回完整列的数据,我已经看到了几种不同的方法。

以下两个条目之间有什么区别,如果有的话?看起来他们回归了同样的事情。

loansData [ 'int_rate']

loansData.int_rate

4 个答案:

答案 0 :(得分:3)

后者基本上是前者的语法糖。 (至少)有几个陷阱:

  • 如果列的名称不是有效的Python标识符(例如,如果列名称为my column name?!,则必须使用前者。

  • 有些令人惊讶的是,您只能使用前一种形式来完全正确添加新列(例如,请参阅here)。

后一声明的示例:

import pandas as pd

df = pd.DataFrame({'a': range(4)})
df.b = range(4)
>> df.columns
Index([u'a'], dtype='object')

但出于某种原因,df.b会返回正确的结果。

答案 1 :(得分:2)

他们确实回归了同样的事情。 pandas中的列名类似于引用系列的字典键。列名称本身是命名属性,属于dataframe对象。

第一种方法是首选方法,因为它允许空格和其他非法操作符。

有关更完整的说明,我建议您查看一下这篇文章: http://byumcl.bitbucket.org/bootcamp2013/labs/pd_types.html#pandas-types

搜索'使用dict表示法访问'以查找显示这两个方法返回相同值的示例。

答案 2 :(得分:1)

它们是相同的,但对我来说,第一个方法处理列名和非法字符中的空格所以是首选,例如:

In [115]:

df = pd.DataFrame(columns=['a', ' a', '1a'])
df
Out[115]:
Empty DataFrame
Columns: [a,  a, 1a]
Index: []

In [116]:

print(df.a) # works
print([' a']) # works
print(df.1a) # error
  File "<ipython-input-116-4fa4129a400e>", line 3
    print(df.1a)
             ^
SyntaxError: invalid syntax

真的当你使用点.时,它试图找到一个键作为属性,如果由于某种原因你使用了与属性匹配的列名,那么使用点将不会达到预期的效果。

示例:

In [121]:

df = pd.DataFrame(columns=['index'], data = np.random.randn(3))
df
Out[121]:
      index
0  0.062698
1 -1.066654
2 -1.560549
In [122]:

df.index
Out[122]:
Int64Index([0, 1, 2], dtype='int64')

上面已经显示了索引而不是列'index'

答案 3 :(得分:0)

如果您正在处理任何ML项目,并且想要分别提取特征变量和目标变量,并且需要将它们分开放置,则可以。 下面的代码将很有用:这是通过将索引作为列表来选择要素并将其应用于数据框。这段代码中的数据是DF。

len_col=len(data.columns)
total_col=list(data.columns)
Target_col_Y=total_col[-1]
Feature_col_X=total_col[0:-1]
print('The dependent variable is')
print(Target_col_Y)
print('The independent variables are')
print(Feature_col_X)

相同的输出可如下获得:

The dependent variable is
output
The independent variables are
['age', 'job', 'marital', 'education','day_of_week', ... etc]