熊猫初学者在这里。我想要返回完整列的数据,我已经看到了几种不同的方法。
以下两个条目之间有什么区别,如果有的话?看起来他们回归了同样的事情。
loansData [ 'int_rate']
loansData.int_rate
答案 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]