我有一個如下所示的資料框,需要為每個唯一日期創建(1)一個新的資料框,以及(2)創建一個新的全域變數,并將新資料框的日期作為值。這需要在一個回圈中。
使用下面的資料框,我需要遍歷 3 個新資料框,每個日期值(202107、202108 和 202109)一個。此回圈發生在現有函式中,然后在進一步計算中使用新資料幀及其每次迭代的相應全域變數。例如,第一次迭代將產生一個新的資料幀,該資料幀由以下資料幀的前兩行和新全域變數“202107”的值組成。這樣做最直接的方法是什么?
| 日期 | Col1 | Col2 |
|---|---|---|
| 202107 | 1.23 | 6.72 |
| 202107 | 1.56 | 2.54 |
| 202108 | 1.78 | 7.54 |
| 202108 | 1.53 | 7.43 |
| 202108 | 1.58 | 2.54 |
| 202109 | 1.09 | 2.43 |
| 202109 | 1.07 | 5.32 |
uj5u.com熱心網友回復:
回圈結果.groupby:
for _, new_df in df.groupby("Date"):
print(new_df)
print("-" * 80)
印刷:
Date Col1 Col2
0 202107 1.23 6.72
1 202107 1.56 2.54
--------------------------------------------------------------------------------
Date Col1 Col2
2 202108 1.78 7.54
3 202108 1.53 7.43
4 202108 1.58 2.54
--------------------------------------------------------------------------------
Date Col1 Col2
5 202109 1.09 2.43
6 202109 1.07 5.32
--------------------------------------------------------------------------------
然后您可以存盤new_df到串列或字典中,然后使用它。
uj5u.com熱心網友回復:
您可以使用該方法提取唯一的日期值.unique(),然后將新的資料框和日期存盤在 adict中以便輕松訪問,例如:
unique_dates = init_df.Date.unique()
df_by_date = {
str(date): init_df[init_df['Date'] == date] for date in unique_dates
}
你像這樣使用字典:
for date in unique_dates:
print(date, ': \n', df_by_date[str(date)])
輸出:
202107 :
Date Col1 Col2
0 202107 1.23 6.72
1 202107 1.56 2.54
202108 :
Date Col1 Col2
2 202108 1.78 7.54
3 202108 1.53 7.43
4 202108 1.58 2.54
202109 :
Date Col1 Col2
5 202109 1.09 2.43
6 202109 1.07 5.32
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505755.html
下一篇:洗掉物件列中的引號
