Похоже, когда вы передаете список в 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]
являются дата и цена.