2016-03-23 10 views
1

Ich versuche, ein float von der Zeichenfolge, skalieren Sie es und ersetzen Sie dann den alten Wert durch die neue, aber die "Beispiel" Variable scheint nur eine Kopie und kein Verweis auf Elemente in der Spalte.Wie ändert man eine Pandas Dataframe Spalte mit foreach?

for sample in AmpDataFrame['Sample']: 
    split_sample = sample.partition(' ') 
    try: 
     tempsample = float(split_sample[0]) 
     tempsample *= CurrentShunt_mVtoAmp 
     sample = str(tempsample) 
    except ValueError: 
     print("Not a float") 
+2

Kannst du nicht einfach 'AmpDataFrame ['Sample'] = (AmpDataFrame ['Sample']. Str.split ('') .str [0] .type (float) * CurrentShunt_mVtoAmp) .astype (str)' – EdChum

+0

Ja, das funktioniert. Ich wusste nicht, dass ich tun könnte, was ich vermute, ist eine Lamda, so in Python. Ich bin meistens ein C# Entwickler. – TheColonel26

+0

Das ist kein Lambda – EdChum

Antwort

1

Wie, warum, was Sie es versäumt, du bist in der Series über die Zeilenwerte iterieren so funktionieren alle Mutationen auf einer Kopie keine Sicht. Außerdem können Sie erreichen, was Sie, indem Sie die folgenden auf der ganzen df wollen:

AmpDataFrame['Sample'] = (AmpDataFrame['Sample'].str.split(' ').str[0].astype(float) * CurrentShunt_mVtoAmp).astype(str) 

Also das nennt str.split und gibt die erste Spalte, wirft zu schweben und vervielfacht durch Ihre konstanten Wert und wirft es zurück zu str

Verwandte Themen