web-dev-qa-db-fra.com

Itérer dans une trame de données par index

J'ai un dataframe appelé staticData qui ressemble à ceci:

                         narrow_sector       broad_sector country exchange  \
unique_id                                                                    
BBG.MTAA.STM.S          Semiconductors         Technology      CH     MTAA   
BBG.MTAA.CNHI.S  Machinery-Diversified         Industrial      GB     MTAA   
BBG.MTAA.FCA.S      Auto Manufacturers  Consumer Cyclical      GB     MTAA   
BBG.MTAA.A2A.S                Electric          Utilities      IT     MTAA   
BBG.MTAA.ACE.S                Electric          Utilities      IT     MTAA 

Je cherche à parcourir la ligne de données ligne par ligne en sélectionnant deux bits d'informations, l'index (unique_id) et l'échange. J'ai un problème d'itération sur l'index. Veuillez voir mon code:

 for i, row in staticData.iterrows():

        unique_id = staticData.ix[i]

        exchange = row['exchange']

J'ai essayé unique_id = row ['unique_id'], mais je n'arrive pas à le faire fonctionner ...

J'essaie de revenir dire pour row1

unique_id = BBG.MTAA.STM.S
exchange = MTAA 
9
Stacey

Vous voulez ce qui suit:

for i, row in staticData.iterrows():
    unique_id = i
    exchange = row['exchange']

je serai la valeur de l'étiquette d'index

Exemple:

In [57]:
df = pd.DataFrame(np.random.randn(5,3), index=list('abcde'), columns=list('fgh'))
df

Out[57]:
          f         g         h
a -0.900835 -0.913989 -0.624536
b -0.854091  0.286364 -0.869539
c  1.090133 -0.771667  1.258372
d -0.721753 -0.329211  0.479295
e  0.520786  0.273722  0.824172

In [62]:
for i, row in df.iterrows():
    print('index: ', i, 'col g:', row['g'])

index:  a col g: -0.913988608754
index:  b col g: 0.286363847188
index:  c col g: -0.771666520074
index:  d col g: -0.329211394286
index:  e col g: 0.273721527592

Peut-être une manière plus pandasienne?

staticData.apply((lambda x: (x.name, x['exchange'])), axis=1)
4
knagaev