使用loc[x,y]
与loc[x][y]
与loc[[x]][y]
的区别有何不同?乍一看,它们看起来非常相似。
df = pd.DataFrame(np.arange(6).reshape(3, 2),
columns=['price', 'count'],
index=['First', 'Second', 'Third'])
print(df)
# price count
# First 0 1
# Second 2 3
# Third 4 5
print(df.loc['Second', 'count'])
# 3
print(df.loc['Second']['count'])
# 3
print(df.loc[['Second'], 'count'])
# Second 3
答案 0 :(得分:2)
虽然前两个在输出中是等价的,但第二个称为链式索引:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
第二个类型也是Series
:
In[48]:
type(df.loc['Second'])
Out[48]: pandas.core.series.Series
然后索引索引值,然后返回标量值:
In[47]:
df.loc['Second']
Out[47]:
price 2
count 3
Name: Second, dtype: int32
In[49]:
df.loc['Second']['count']
Out[49]: 3
关于最后一个,附加括号返回一个df,这就是你看到索引值而不是标量值的原因:
In[44]:
type(df.loc[['Second']])
Out[44]: pandas.core.frame.DataFrame
然后传递列,索引此df并返回匹配列,作为Series
:
In[46]:
type(df.loc[['Second'],'count'])
Out[46]: pandas.core.series.Series
所以它取决于你想要达到的目的,但是避免使用第二种形式,因为它可能会在尝试分配到列或df时导致意外行为