Pandas DataFrame.resample(~)
方法根據時間執行 group-by。這些參數本身很難解釋,因此我們建議查看我們的示例以進行澄清。
參數
1.rule
| DateOffset
或 Timedelta
或 string
每組的時間長度。
2. axis
| int
或 string
| optional
是否對每行或列重新采樣:
軸 |
說明 |
---|---|
|
對每一行重新采樣。 |
|
對每列重新采樣。 |
默認情況下,axis=0
。
3. closed
| string
| optional
bin區間的哪一側是封閉的:
值 |
說明 |
---|---|
|
bin區間右側封閉(含) |
|
bin 間隔的左側是封閉的 |
默認情況下, closed="left"
,但以下頻率偏移除外,默認情況下具有 closed="right"
:
‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’
4. label
| string
| optional
bin 間隔的哪一側被標記:
值 |
說明 |
---|---|
|
bin 間隔的右側已標記 |
|
bin 間隔的左側已標記 |
默認情況下, label=None
,但以下頻率偏移除外,默認情況下具有 label="right"
:
‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’
5. convention
| string
| optional
僅當源 DataFrame 的索引為 PeriodIndex
時,這才相關。是否使用 PeriodIndex
的開始時間或結束時間:
值 |
說明 |
---|---|
|
使用 |
|
使用 |
默認情況下,convention="start"
。
6. kind
| None
或 string
| optional
結果索引的數據類型:
值 |
說明 |
---|---|
|
保留結果索引不變。 |
|
將結果索引轉換為 |
|
將結果索引轉換為 |
默認情況下,kind=None
。
7. loffset
| timedelta
| optional
應用在時間標簽上的偏移量。默認情況下,loffset=None
。
8. base
| int
| optional
第一組中包含的行數。查看示例以進行澄清。默認情況下,base=0
。
9. on
| string
| optional
用於重新采樣而不是索引的列。該列的類型必須是 datetime-like (例如 datetime64
)。默認情況下,索引將用於重采樣。
10.level
| string
或 int
| optional
用於重采樣的級別。僅當 DataFrame 具有多索引時,這才相關。 level
也必須是 datetime-like 類型(例如 datetime64
)。
返回值
Resampler
對象。
例子
考慮以下 DataFrame :
date_index = pd.date_range("2020/12/25", periods=4)
df = pd.DataFrame({"A":[2,3,4,5],"B":[6,7,8,9]}, index=date_index)
df
A B
2020-12-25 2 6
2020-12-26 3 7
2020-12-27 4 8
2020-12-28 5 9
這裏, df
的索引是 DatetimeIndex
類型。
基本用法
計算每組連續 2 天的總和:
df.resample(rule="2D").sum() # returns a DataFrame
A B
2020-12-25 5 13
2020-12-27 9 17
默認情況下,當隨後調用 sum()
等聚合函數時,會考慮所有列。要僅在某些列上應用該函數,請使用 []
表示法,如下所示:
df.resample(rule="2D")["A"].sum() # returns a Series since we only selected 1 column
2020-12-25 5
2020-12-27 9
Freq: 2D, Name: A, dtype: int64
指定關閉
考慮與上麵相同的df
:
df
A B
2020-12-25 2 6
2020-12-26 3 7
2020-12-27 4 8
2020-12-28 5 9
默認為closed="left"
(檢查參數說明是否有異常),這意味著:
-
左側 bin 間隔包含在內
-
右 bin 間隔是排他的
df.resample(rule="2D", closed="left").sum()
A B
2020-12-25 5 13 # Sum of 12-25 and 12-26
2020-12-27 9 17 # Sum of 12-27 and 12-28
另一方麵,傳遞 closed="right"
意味著:
-
左側 bin 間隔不包括在內
-
正確的 bin 間隔包含在內
df.resample(rule="2D", closed="right").sum()
A B
2020-12-23 2 6 # Sum of 12-24 and 12-25
2020-12-25 7 15 # Sum of 12-26 and 12-27
2020-12-27 5 9 # Sum of 12-28 and 12-29
供您參考,這裏再次是我們的df
:
df
A B
2020-12-25 2 6
2020-12-26 3 7
2020-12-27 4 8
2020-12-28 5 9
指定標簽
默認為label="left"
(檢查參數說明是否有異常),表示使用左側區間bin的標簽:
df.resample(rule="2D", label="left").sum()
A B
2020-12-25 5 13 # Sum of 12-25 and 12-26
2020-12-27 9 17 # Sum of 12-27 and 12-28
要使用右側間隔箱的標簽,請設置label="right"
,如下所示:
df.resample(rule="2D", label="right").sum()
A B
2020-12-27 5 13 # Sum of 12-25 and 12-26
2020-12-29 9 17 # Sum of 12-27 and 12-28
指定種類
要獲得 DatetimeIndex
,請像這樣設置 kind="timestamp"
:
df.resample(rule="2D", kind="timestamp").sum().index
DatetimeIndex(['2020-12-25', '2020-12-27'], dtype='datetime64[ns]', freq='2D')
要獲得 PeriodIndex
,請像這樣設置 kind="period"
:
df.resample(rule="2D", kind="period").sum().index
PeriodIndex(['2020-12-25', '2020-12-27'], dtype='period[2D]', freq='2D')
指定loffset
供您參考,這裏再次是我們的df
:
df
A B
2020-12-25 2 6
2020-12-26 3 7
2020-12-27 4 8
2020-12-28 5 9
要將標簽移動 1 天,請傳遞 loffset="1D"
,如下所示:
df.resample(rule="2D", loffset="1D").sum()
A B
2020-12-26 5 13
2020-12-28 9 17
請注意,隻有標簽發生了偏移 - DataFrame 的結果值不受影響。
作為對比,我們不指定loffset
的情況如下:
df.resample(rule="2D").sum()
A B
2020-12-25 5 13
2020-12-27 9 17
指定基數
考慮以下 DataFrame :
date_index = pd.date_range("2020/12/25", periods=4)
df = pd.DataFrame({"A":[2,3,4,5],"B":[6,7,8,9]}, index=date_index)
df
A B
2020-12-25 2 6
2020-12-26 3 7
2020-12-27 4 8
2020-12-28 5 9
以 4 天產量重新采樣:
df.resample(rule="4D").sum()
A B
2020-12-25 14 30
指定base
可確保第一組具有base
行數。例如,base=2
產生:
df.resample(rule="4D", base=2).sum()
A B
2020-12-23 5 13
2020-12-27 9 17
在這裏,請注意我們如何從 12-23
而不是 12-25
開始。這是因為 base=2
確保僅 df
的前兩行放置在第一組中。由於我們仍然按連續 4 天進行分組,因此將開始日期更改為 12-23
。
指定於
默認,resample(~)
方法假設 index DataFrame 的值為datetime-like。參數on
允許您重新采樣柱子.
考慮以下 DataFrame :
date_index = pd.date_range("2020/12/25", periods=4)
df = pd.DataFrame({"A":date_index,"B":[3,4,5,6]})
df
A B
0 2020-12-25 3
1 2020-12-26 4
2 2020-12-27 5
3 2020-12-28 6
要對列 A
重新采樣:
df.resample(rule="2D", on="A").sum()
B
A
2020-12-25 7
2020-12-27 11
請注意以下事項:
-
A
列成為新索引。 -
分配給這個新索引的名稱是列標簽(在本例中為
A
)。
相關用法
- Python Pandas DataFrame reset_index方法用法及代碼示例
- Python PySpark DataFrame repartition方法用法及代碼示例
- Python PySpark DataFrame replace方法用法及代碼示例
- Python Pandas DataFrame reorder_levels方法用法及代碼示例
- Python Pandas DataFrame reindex方法用法及代碼示例
- Python Pandas DataFrame replace方法用法及代碼示例
- Python Pandas DataFrame rename_axis方法用法及代碼示例
- Python Pandas DataFrame rename方法用法及代碼示例
- Python Pandas DataFrame rank方法用法及代碼示例
- Python Pandas DataFrame rdiv方法用法及代碼示例
- Python Pandas DataFrame radd方法用法及代碼示例
- Python PySpark DataFrame rdd屬性用法及代碼示例
- Python Pandas DataFrame rsub方法用法及代碼示例
- Python Pandas DataFrame round方法用法及代碼示例
- Python PySpark DataFrame randomSplit方法用法及代碼示例
- Python Pandas DataFrame rolling方法用法及代碼示例
- Python Pandas DataFrame rpow方法用法及代碼示例
- Python Pandas DataFrame rfloordiv方法用法及代碼示例
- Python Pandas DataFrame rtruediv方法用法及代碼示例
- Python Pandas DataFrame rmod方法用法及代碼示例
- Python Pandas DataFrame rmul方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | resample method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。