2016-08-19 4 views
1

Mein Datenrahmen ist in diesem Formatunerwartetes Verhalten, wenn Ausreißer in Pandas [Python]

df 

      Count 
DateTime  
2015-01-16 10 
2015-01-17 28 
2015-01-18 26 
2015-01-19 10 
2015-01-20 24 
2015-01-21 25 

Im mit dieser Funktion zu experimentieren Gruppierung Ausreißer zu eliminieren groupby mit

def replaceit(group): 
    mean, std = group.mean(), group.std() 
    outliers = (group - mean).abs() > 3*std 
    group[outliers] = mean  # or "group[~outliers].mean()" 
    return group 

eine Kopie dieses Datenrahmen erstellen als ich will es an anderer Stelle verwenden:

df2 = df 

Ermöglicht die Ausgabe von DF2 sehen

df2 

      Count 
DateTime  
2015-01-16 10 
2015-01-17 28 
2015-01-18 26 
2015-01-19 10 
2015-01-20 24 
2015-01-21 25 

lässt die Funktion

df2 = replaceit(df2) 

df2 

DateTime 
2015-01-16  10.000000 
2015-01-17  28.000000 
2015-01-18  26.000000 
2015-01-19  10.000000 
2015-01-20  24.000000 
2015-01-21  25.000000 

verwenden, aber jetzt können Sie die Ausgabe von df sehen:

df 

       Count 
DateTime  
2015-01-16 10.000000 
2015-01-17 28.000000 
2015-01-18 26.000000 
2015-01-19 10.000000 
2015-01-20 24.000000 
2015-01-21 25.000000 

Meine Frage ist, warum ist das passiert? Wie kann ich dieses Problem lösen?

+1

Ich glaube, Sie brauchen 'copy' -' df2 = df.copy() ' – jezrael

+0

Danke, ich war nicht bewusst, was man brauchte – SerialDev

Antwort

2

Problem ist, wenn verwenden Sie df2 = df es ist Verweis auf die ursprüngliche DataFrame. Wenn Sie also df2 ändern, wird der ursprüngliche DataFrame df geändert.

Sie benötigen copy:

df2 = df.copy() 
Verwandte Themen