ich Pandas Dataframe df_R haben, die wie folgt aussieht:for-Schleifen zu vermeiden, wenn Pandas Datenrahmen subsetting
Change Date SubsetCondId
0 0.000230 2015-02-13 868
1 -0.000080 2015-02-16 868
2 0.000380 2015-02-17 868
3 -0.000430 2015-02-13 679
4 0.000000 2015-02-16 679
5 0.000000 2015-02-17 679
6 0.004075 2015-02-13 10
7 0.000000 2015-02-16 10
8 0.001598 2015-02-17 10
9 0.015038 2015-02-13 937
10 0.000000 2015-02-16 937
Um einen neuen Datenrahmen R, das zeigt die Datum als Indizes zu erstellen und die SubsetCondId als Spalten habe ich die folgenden:
factorsId = np.sort(df_R['SubsetCondId'].unique())
dates = np.sort(df_R['Date'].unique())
R = pd.DataFrame(index=dates, columns=factorsId)
for fac_id in factorsId:
dates_id = df_R['Date'][df_R['SubsetCondId']==fac_id]
R_id = np.array(df_R['Change'][df_R['SubsetCondId']==fac_id])
R.loc[dates_id,fac_id] = R_id
R = R.fillna(value=0)
als der Satz von dat a wird größer, der Prozess wird langsamer. Gibt es einen anderen Weg, um mit diesem Problem umzugehen, vielleicht einen vektorisierten Ansatz?
df.set_index einzustellen (‚Datum‘) würde Datum als Index anzeigen – Vaishali