Hier ist das Problem. Ich benutze eine Funktion einer randomisierten Daten zurückzugeben,Python & Pandas: Wie man eine Kopie eines Datenrahmens zurückgibt?
data1 = [3,5,7,3,2,6,1,6,7,8]
data2 = [1,5,2,1,6,4,3,2,7,8]
df = pd.DataFrame(data1, columns = ['c1'])
df['c2'] = data2
def randomize_data(df):
df['c1_ran'] = df['c1'].apply(lambda x: (x + np.random.uniform(0,1)))
df['c1']=df['c1_ran']
# df.drop(['c1_ran'], 1, inplace=True)
return df
temp_df = randomize_data(df)
display(df)
display(temp_df)
jedoch die df
(Quelldaten) und die temp_df
(randomized_data) gleich ist. Hier ist das Ergebnis:
Wie kann ich die temp_df
und df
voneinander verschieden zu machen?
Ich finde ich kann df.copy()
loswerden des Problems am Anfang der Funktion Hinzufügen
def randomize_data(df):
df = df.copy()
Aber ich bin mir nicht sicher, ob dies der richtige Weg ist, um damit umzugehen?
Ja. Es ist. Also ... sollte diese Frage wahrscheinlich einfach löschen, weil 'df.copy()' die Antwort ist, die Sie bereits machen: P –
@WayneWerner ist es möglich, '.copy()' eine Standardoption in benutzerdefinierten Funktionen zu machen ? Ich fühle es sehr reduddent, wenn Sie das 'df' zurückgeben wollen. Und dazu müssen Sie 'df = df.copy()' oft in der Funktion hinzufügen. – cqcn1991
@WayneWerner Oder verwende ich es falsch? Gibt es eine bessere Möglichkeit, ein df in einer benutzerdefinierten Funktion zurückzugeben? – cqcn1991