Seite 1 von 1

Erstellen neuer Spalte mit positiven Werten in Pandas

Verfasst: Donnerstag 30. Oktober 2014, 07:15
von E1986
Hi. Ich habe einen Pandas DataFrame df, wie unten gezeigt.

Code: Alles auswählen

Date        Time            Value/MWh
01.08.2009  00:00 - 01:00   0
01.08.2009  01:00 - 02:00   -100
01.08.2009  02:00 - 03:00   80
01.08.2009  03:00 - 04:00   50
Falls in der Value/MWh-Spalte eine negative Zahl steht, möchte ich diese als positive Zahl in einer neuen Spalte haben. In der alten Spalte soll dann eine 0 stehen.
So sollte es dann aussehen:

Code: Alles auswählen

Date        Time            Value/MWh
01.08.2009  00:00 - 01:00   0   0
01.08.2009  01:00 - 02:00   0   100
01.08.2009  02:00 - 03:00   80  0
01.08.2009  03:00 - 04:00   50  0
Ich habe etwas rumprobiert, mit NumPy (bin da bewanderter), aber das funktioniert nicht. Weiß jemand gute Python/Pandas-Methoden, um dort hinzukommen, wo ich hinmöchte?

Re: Erstellen neuer Spalte mit positiven Werten in Pandas

Verfasst: Donnerstag 30. Oktober 2014, 09:56
von BlackJack
@E1986: Das Ergebnis sieht unvollständig aus, denn die letzte Spalte ist nicht weit genug eingerückt und hat keinen Namen.

Ansonsten würde ich die Werte wie in Numpy bestimmen — beispielsweise negieren und dann mit `clip()` die Untergrenze auf 0 beschränken:

Code: Alles auswählen

In [31]: df
Out[31]: 
          a         b         c         d         e
0 -1.013320 -0.425068  0.059308  1.101891 -0.565119
1 -0.153805 -0.856334  1.797218 -0.084897 -1.727285
2 -1.227438  0.469735 -1.300072 -0.304345 -0.983917
3  0.679577  1.344651  0.218574  1.426298  0.657777
4 -0.135616 -0.737365 -0.427515 -0.082377  0.423214
5 -0.403388 -2.031870 -0.166666 -0.077302 -0.321080
6  1.806803  1.591405 -0.005332 -1.618079 -0.272845
7  0.507349 -0.169954 -1.010509 -0.059223 -1.134910
8 -0.304001 -0.659369  1.162756  0.863579 -0.033940
9  1.677836 -0.456035 -1.661636 -0.538276 -0.278343

In [32]: df.a
Out[32]: 
0   -1.013320
1   -0.153805
2   -1.227438
3    0.679577
4   -0.135616
5   -0.403388
6    1.806803
7    0.507349
8   -0.304001
9    1.677836
Name: a, dtype: float64

In [33]: -df.a
Out[33]: 
0    1.013320
1    0.153805
2    1.227438
3   -0.679577
4    0.135616
5    0.403388
6   -1.806803
7   -0.507349
8    0.304001
9   -1.677836
Name: a, dtype: float64

In [34]: (-df.a).clip(0)
Out[34]: 
0    1.013320
1    0.153805
2    1.227438
3    0.000000
4    0.135616
5    0.403388
6    0.000000
7    0.000000
8    0.304001
9    0.000000
Name: a, dtype: float64

Re: Erstellen neuer Spalte mit positiven Werten in Pandas

Verfasst: Donnerstag 30. Oktober 2014, 10:20
von E1986
Hi. Danke für deine Antwort. Ich werds mal probieren.
Im "Ergebnis" von mir hatte ich die Beschriftung der andere Spalte vergessen.