Почему разные выходы для обоих случаев? - PullRequest
0 голосов
/ 22 февраля 2020

Сначала я применяю условие к определенному столбцу и получаю желаемый результат.

Первый случай

df[df['country'] == 'Zimbabwe']

Выход

    country continent   year    lifeExp pop gdpPercap
1692    Zimbabwe    Africa  1952    48.451  3080907 406.884115
1693    Zimbabwe    Africa  1957    50.469  3646340 518.764268
1694    Zimbabwe    Africa  1962    52.358  4277736 527.272182
1695    Zimbabwe    Africa  1967    53.995  4995432 569.795071
1696    Zimbabwe    Africa  1972    55.635  5861135 799.362176
1697    Zimbabwe    Africa  1977    57.674  6642107 685.587682
1698    Zimbabwe    Africa  1982    60.363  7636524 788.855041
1699    Zimbabwe    Africa  1987    62.351  9216418 706.157306
1700    Zimbabwe    Africa  1992    60.377  10704340    693.420786
1701    Zimbabwe    Africa  1997    46.809  11404948    792.449960
1702    Zimbabwe    Africa  2002    39.989  11926563    672.038623
1703    Zimbabwe    Africa  2007    43.487  12311143    469.709298

Второй случай

df[df.iloc[:,[0]] == 'Zimbabwe']

Вывод

    country continent   year    lifeExp pop gdpPercap
0   NaN NaN NaN NaN NaN NaN
1   NaN NaN NaN NaN NaN NaN
2   NaN NaN NaN NaN NaN NaN
3   NaN NaN NaN NaN NaN NaN
4   NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ...
1699    Zimbabwe    NaN NaN NaN NaN NaN
1700    Zimbabwe    NaN NaN NaN NaN NaN
1701    Zimbabwe    NaN NaN NaN NaN NaN
1702    Zimbabwe    NaN NaN NaN NaN NaN
1703    Zimbabwe    NaN NaN NaN NaN NaN

Почему я не получаю такой же вывод в второй случай как в первом случае? В чем разница между этими двумя командами?

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Поскольку создан один столбец DataFrame, для сравнения серии удалите один [], что необходимо для boolean indexing:

df[df.iloc[:,0] == 'Zimbabwe']

Проверьте разницу:

#Series
print(df['country'])
1692    Zimbabwe
1693    Zimbabwe
1694    Zimbabwe
Name: country, dtype: object

#Series
print (df.iloc[:,0])
1692    Zimbabwe
1693    Zimbabwe
1694    Zimbabwe
Name: country, dtype: object

#one column Dataframe
print(df.iloc[:,[0]])
       country
1692  Zimbabwe
1693  Zimbabwe
1694  Zimbabwe
0 голосов
/ 23 апреля 2020

я удалил один '' '[]' '', что необходимо для логической индексации, что помогает мне получить логическую серию.

...