我不知道为什么在执行按列应用功能时索引方法的行为不一致。
数据框为:
df = pd.DataFrame( [(1, 'Hello'), (2, "World")])
df.columns=['A', 'B']
我想将 lambda 应用于第二列,它说不能应用 Series 对象?
print df.iloc[:, 1:2].apply(lambda x: x.upper()).head()
**AttributeError**:("'Series' object has no attribute 'upper'", u'occurred at index B')
print df.loc[:, ['B']].apply(lambda x: x.upper()).head()
**AttributeError**:("'Series' object has no attribute 'upper'", u'occurred at index B')
但是下面的索引方法效果很好。
print df.loc[:, 'B'].apply(lambda x: x.upper()).head()
为什么?我认为这三种索引方法是等价的吗?如果打印出来,以上三种索引方法的结果几乎相同:
B
0 Hello
1 World
并打印 df.loc[:, 'B'] 得到
0 Hello
1 World
Name: B, dtype: object
这些差异意味着什么?