2012-03-30 2 views
1

Récemment, je fais un peu de travail avec deux séries pandas géants:pandas géants: changer une série en utilisant une seconde avec le même indice

  • La première série contient des données purement numériques
  • La deuxième série contient données catégoriques: "Plus", "Minus" et NaN.

données Exemple:

first_series = pandas.Series([0.000003, 0.004991, 0.004991]) 
second_series = pandas.Series(["Plus", "Minus", np.nan], dtype="object", 
           index=first_series.index) 

(dans le scénario du monde réel, la deuxième série est construit en utilisant programme le même indice que le premier, mais ici il est juste un exemple simplifié)

Je fais d'abord une certaine manipulation:

first_series = np.log2(1/first_series) 

Ensuite, je dois inverser le signe (multiplier par -1) du « M correspondant inus "entrées, et tourner à NaN ceux qui dans la deuxième série sont NaN.

La dernière partie fonctionne bien:

first_series[np.invert(second_series.notnull())] = np.nan 

print first_series 

0 18.567557 
1  7.646459 
2   NaN 
Name: Example data 

Cependant, je suis un peu coincé avec la première partie. Comment puis-je utiliser les informations de la seconde série (étant donné qu'elles sont indexées de manière identique) pour basculer le signe dans la première série?

En tant que référence, après l'application, first_series devrait être comme ceci:

0 18.567557 
1 -7.646459 
2   NaN 
Name: Example data 

Répondre

2
first_series[second_series == 'Minus'] *= -1 
first_series[second_series.isnull()] = np.nan 

vous donne:

0 18.346606 
1 -7.646455 
2   NaN 
+0

Il ne fonctionne pas dans la caisse actuelle de pandas géants I » J'utilise. Je vais déposer un bug. – Einar

Questions connexes