2 回答

TA贡献1798条经验 获得超3个赞
看起来当您将列表传递到数据帧上的 loc 或 iloc 时,将始终返回数据帧(请注意,这df['date'] == '20180924'是一个布尔值列表)。
type(df.loc[df['date'] == '20180924']) = pandas.core.frame.DataFrame
type(df.loc[[0]]) = pandas.core.frame.DataFrame
type(df.iloc[[0]]) = pandas.core.frame.DataFrame
但是,如果您将索引(假设您的数据帧不是多索引)传递到数据帧上的 loc 或 iloc 中,则会产生一个系列:
type(df.loc[0]) = pandas.core.series.Series
type(df.iloc[0]) = pandas.core.series.Series
df.loc[0]并且df.iloc[0]是相同的(尽管情况并非总是如此,请参阅此处的原因)。这是结果:
date 20180926
price 100
Name: 0, dtype: object
同样,如果您将索引传递给系列上的 iloc,它将产生一个标量(即返回一个值):
type(df.iloc[0].iloc[0])
在这种情况下,您将选择系列中的第 0 个定位元素df.iloc[0],即'20180926'. 请注意,调用df.iloc[0].loc[0]无效,因为 0 不是本系列中的索引。df.iloc[0]系列中的指数是日期和价格。

TA贡献1821条经验 获得超6个赞
使用[]将返回pd.Series
a['date'][2]
Out[257]: '20180924'
a.iloc[0]['date']
Out[258]: '20180924'
a.loc[2,'date']
Out[259]: '20180924'
添加回答
举报