Ich habe einen Datenrahmen dfErstellen neuer Datenrahmen in Pandas mit dynamischen Namen auch hinzufügen neue Spalte
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]})
Added eine neue Spalte
df['YearMonth'] = df['t'].map(lambda x: 100*x.year + x.month)
Jetzt möchte ich eine Funktion oder ein Makro schreiben, die tun Datum Vergleich, erstellen Sie einen neuen Datenrahmen und fügen Sie dem Datenrahmen eine neue Spalte hinzu.
ich so versucht, aber scheine, dass ich falsch bin dabei:
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
Nun, wenn ich Testfunktion aufrufen möchte ich einen neuer Datenrahmen sollte als df_new_201612
und dieser neue Datenrahmen sollte eine weitere Spalte mit dem Namen erstellt wird, hat mit dem Namen als new_col
, die für alle Zeilen den Wert ym
hat.
test(df,201612)
Die Ausgabe neuen Datenrahmen 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 + "neue" + ym [ 'new_col'] = ym' einen' SnytaxError' wirft. Ich glaube auch nicht, dass 'return df_new +" _ "+ ym' das tut, was Sie denken, dass es tut. – nlsdfnbch
Ich weiß, dass ich etwas falsch mache. Bitte lassen Sie mich wissen, wenn Sie eine Idee, oben in Pandas – user07
implementieren wissen jemand weiß, wie man mit Nan umgehen ... unten Lösung funktioniert, wenn ich keine Nan-Wert in YearMonth haben. Wie man es schafft, wenn wir auch Nan haben? – user07