Читать все элементы в Python Dataframe - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть набор данных, где столбцы представляют ГОД и могут быть динамическими с течением времени.Набор данных выглядит так -

Unnamed: 0  2000    2001    2002    2003    2004    2005    2006    2007    2008    2009    2010
0   North America   109.24  119.60946   144.29389   187.86691   227.29032   265.21215   340.15054   472.83005   666.47907   768.71809   914.4242
1   Bermuda 0   0   0   0   0   0   0   0   0   0   0
2   Canada  3.7 3.9 4   4   4   4.6 5.2 15.4    16.7    22.1    26.4
3   Greenland   0   0   0   0   0   0   0   0   0   0   0
4   Mexico  0   0   0   0   0   0   0   0.1 0.1 0.103   0.4

Я хочу перебрать все элементы, чтобы увидеть, есть ли в любой ячейке> 50, и напечатать соответствующее название страны.

1 Ответ

0 голосов
/ 11 сентября 2018

Сначала создать индекс по первому столбцу с помощью параметра set_index или index_col в read_csv:

df = df.set_index('Unnamed: 0')
#alternative if possible
#df = pd.read_csv(file, index_col=0)

print (df)
                 2000       2001       2002       2003       2004       2005  \
Unnamed: 0                                                                     
North America  109.24  119.60946  144.29389  187.86691  227.29032  265.21215   
Bermuda          0.00    0.00000    0.00000    0.00000    0.00000    0.00000   
Canada           3.70    3.90000    4.00000    4.00000    4.00000    4.60000   
Greenland        0.00    0.00000    0.00000    0.00000    0.00000    0.00000   
Mexico           0.00    0.00000    0.00000    0.00000    0.00000    0.00000   

                    2006       2007       2008       2009      2010  
Unnamed: 0                                                           
North America  340.15054  472.83005  666.47907  768.71809  914.4242  
Bermuda          0.00000    0.00000    0.00000    0.00000    0.0000  
Canada           5.20000   15.40000   16.70000   22.10000   26.4000  
Greenland        0.00000    0.00000    0.00000    0.00000    0.0000  
Mexico           0.00000    0.10000    0.10000    0.10300    0.4000  

out = df.index[df.gt(50).any(axis=1)].tolist()
print (out)
['North America']

Объяснение

Сравнение всех данных по DataFrame.gt, (>):

print (df.gt(50))
                2000   2001   2002   2003   2004   2005   2006   2007   2008  \
Unnamed: 0                                                                     
North America   True   True   True   True   True   True   True   True   True   
Bermuda        False  False  False  False  False  False  False  False  False   
Canada         False  False  False  False  False  False  False  False  False   
Greenland      False  False  False  False  False  False  False  False  False   
Mexico         False  False  False  False  False  False  False  False  False   

                2009   2010  
Unnamed: 0                   
North America   True   True  
Bermuda        False  False  
Canada         False  False  
Greenland      False  False  
Mexico         False  False 

И проверьте, является ли хотя бы одно значение в строке True на DataFrame.any:

print (df.gt(50).any(axis=1))
Unnamed: 0
North America     True
Bermuda          False
Canada           False
Greenland        False
Mexico           False
dtype: bool

Последний фильтр по boolean indexing с df.index:

print (df.index[df.gt(50).any(axis=1)])

Index(['North America'], dtype='object', name='Unnamed: 0')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...