Erstellen neuer dataframe in pandas mit dynamische Namen auch neue Spalte hinzufügen
Ich habe einen dataframe df
df = pd.DataFrame({'A':['-a',1,'a'],
'B':['a',np.nan,'c'],
'ID':[1,2,2],
't':[pd.tslib.Timestamp.now(),pd.tslib.Timestamp.now(),
np.nan]})
Hinzugefügt eine neue Spalte
df['YearMonth'] = df['t'].map(lambda x: 100*x.year + x.month)
Möchte ich nun schreiben Sie eine Funktion oder ein makro, die das Datum comparasion, erstellen Sie ein neues dataframe auch hinzufügen einer neuen Spalte zu dataframe.
Habe ich versucht, aber scheint, ich bin schief:
def test(df,ym):
df_new=df
if(ym <= df['YearMonth']):
df_new+"_"+ym=df_new
return df_new+"_"+ym
df_new+"_"+ym['new_col']=ym
Wenn ich jetzt nennen-test-Funktion, ich will ein neues dataframe sollte erstellt werden mit dem Namen wie df_new_201612
und diese neuen dataframe sollte eine weitere Spalte mit dem Namen als new_col
hat Wert ym
für alle Zeilen.
test(df,201612)
Die Ausgabe von neuen dataframe ist:
df_new_201612
A B ID t YearMonth new_col
-a a 1 2016-12-05 12:37:56.374620 201612 201612
1 NaN 2 2016-12-05 12:37:56.374644 201208 201612
a c 2 nat nan 201612
- Ihr code ist nicht gültig python - die Linie
df_new+"new"+ym['new_col']=ym
wirft einenSnytaxError
. Auch denke ich nicht, dassreturn df_new+"_"+ym
tut, was Sie denken, es tut. - ich weiß, ich bin etwas falsch zu machen. Bitte lassen Sie mich wissen, wenn Sie einige Idee, oben in pandas
- hat jemand wissen, wie man mit nan ... unter Lösung funktioniert, wenn ich nicht haben kein nan-Wert in YearMonth. Wie Sie bekommen es getan, wenn wir nan zu ?
df.dropna()
übernimmt das für Sie - überprüfen Sie die pandas docs für mehr
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen von Variablen mit dynamischen Namen ist in der Regel eine schlechte Praxis ist.
Ich denke, die beste Lösung für Ihr problem ist, um Ihren dataframes in ein Wörterbuch und erstellt dynamisch die Namen der Schlüssel, um Zugriff auf jedem dataframe.
SyntaxErrors
Links und rechts?