46 pandas reindex-重新索引(tcy)
reindex-重新索引2019/1/9
作用是建立一個適應新索引的新物件
1.函式
df.reindex(labels = None,index = None,columns = None,axis = None,method = None,
copy = True,level = None,fill_value = nan,limit = None,tolerance = None )#返回新索引
# 除非新索引等效於當前索引並且copy = False,否則將生成新物件
# 重新索引會更改行標籤和列標籤。資料匹配標籤。新標籤位置插入缺失值(NA) fill or pad向前填充;bfill 向後填充
引數
labels = None | 類似陣列,新標籤/索引 |
index,columns | array-like(應該使用關鍵字指定)新標籤/索引。優選索引物件以避免重複資料 |
axis | int或str,軸('index','columns')或數字(0,1) |
method =None | {None,'pad/bfill','pad'/'ffill','nearest'},填充空值方法。僅適用單調遞增/遞減 |
pad / ffill | 用前面的值填充 預設不填補空白 |
backfill / bfill | 用後面的值填充 |
copy=True | 即使傳遞的索引相同,也返回一個新物件 |
level | int或name跨級別廣播,匹配傳遞的MultiIndex級別的索引值 |
fill_value | 標量,預設np.NaN用於缺失值的值。可是任何值 |
limit | int,向前或向後填充的最大連續元素數 |
tolerance | 不精確匹配的原始和新標籤之間的最大距離。 |
呼叫約定
(index=index_labels, columns=column_labels, ...)
(labels, axis={'index', 'columns'}, ...)
建議您使用關鍵字引數來闡明您的意圖
例項1:序列
s=pd.Series([11,12,13],index=list('abc'))
s.reindex(list('bcd'))
b 12.0
c 13.0
d NaN
dtype: float64
例項2:DataFrame
例項1:重新索引行列
例項1.1:重新索引行
index = ['a1', 'a2', 'a3', 'a4', 'a5']
df = pd.DataFrame({ 'A1': [10,11,12,13,14], 'A2': [21, 22, 23, 24, 25]},index=index)
new_index= ['a7', 'a6', 'a4', 'a3','a2']
result1=df.reindex(new_index)
例項1.2:重新索引列
result2=df.reindex(columns=['A1', 'A3'])
result2=df.reindex(['A1', 'A3'], axis="columns")#使用“軸式”關鍵字引數
例項1.3:重新索引行列 (插值只能按行)
result3=df.reindex(index=['a1','a2','b1'],columns=['A1', 'A3'],fill_value=99)
df.loc[['a1','b1'],['A1','C1']]#報警未定義的標籤
# df result1 result2 result3
A1 A2 A1 A2 A1 A3 A1 A3
a1 10 21 a7 NaN NaN a1 10 NaN a1 10 99
a2 11 22 a6 NaN NaN a2 11 NaN a2 11 99
a3 12 23 a4 13.0 24.0 a3 12 NaN b1 99 99
a4 13 24 a3 12.0 23.0 a4 13 NaN
a5 14 25 a2 11.0 22.0 a5 14 NaN
例項2:fill_value填充缺失值
df.reindex(['a7', 'a6', 'a4', 'a3','a2'], fill_value=99)
df.reindex(['a7', 'a6', 'a4', 'a3','a2'], fill_value='NG')
A1 A2 A1 A2
a7 99 99 a7 NG NG
a6 99 99 a6 NG NG
a4 13 24 a4 13 24
a3 12 23 a3 12 23
a2 11 22 a2 11 22
例項3:method-建立單調遞增索引
date_index = pd.date_range('1/1/2019', periods=4, freq='D')
df2 = pd.DataFrame({"prices": [100, 101, np.nan, 103]},index=date_index)
date_index2 = pd.date_range('12/31/2018', periods=6, freq='D')
df2.reindex(date_index2)
df2.reindex(date_index2, method='bfill')#原始資料值Nan不填充;索引必單調遞增或遞減
df2.reindex(date_index2, method='pad')#原始資料值Nan不填充;索引必單調遞增或遞減
# df result1 result2 result3
prices prices prices prices
2019-01-01 100.0 2018-12-31 NaN 2018-12-31 100.0 2018-12-31 NaN
2019-01-02 101.0 2019-01-01 100.0 2019-01-01 100.0 2019-01-01 100.0
2019-01-03 NaN 2019-01-02 101.0 2019-01-02 101.0 2019-01-02 101.0
2019-01-04 103.0 2019-01-03 NaN 2019-01-03 NaN 2019-01-03 NaN
2019-01-04 103.0 2019-01-04 103.0 2019-01-04 103.0
2019-01-05 NaN 2019-01-05 NaN 2019-01-05 103.0
例項4:reindex的坑
df = pd.DataFrame(np.arange(12).reshape(6, 2), columns=['A', 'B'],index=list('abcdef'))
df.reindex(['b', 'c', 'e']) #應該這樣用 等價df.iloc[[1, 2, 4]]
df.reindex([1, 2, 4]) #出現異常值
A B A B
b 2 3 1 NaN NaN
c 4 5 2 NaN NaN
e 8 9 4 NaN NaN
相關文章
- pandas(3):索引Index/MultiIndex索引Index
- pandas 設定二級索引索引
- C++ list (tcy)C++
- pandas索引和選擇資料索引
- Lesson8——Pandas reindex重置索引Index索引
- Pandas知識點彙總(2)——布林索引索引
- SQL Server 重新組織生成索引SQLServer索引
- pandas 學習 第14篇:索引和選擇資料索引
- pandas筆記(一)-- 大的國家(邏輯索引、切片)筆記索引
- 46
- os ,shutil,send2trash模組彙總(tcy)
- SWIG 打包C++陣列供python呼叫 tcyC++陣列Python
- Pandas之:Pandas簡潔教程
- vue46Vue
- Pandas
- Pandas進階貳 pandas基礎
- Pandas - pandas.Series.pipe 函式函式
- FastAPI(46)- JSONResponseASTAPIJSON
- C++學習(46)C++
- Using Multiple Tablespaces (46)
- 牛客周賽Ronud 46
- pandas 列操作
- Pandas入門
- Pandas基礎
- python pandasPython
- Pandas之:深入理解Pandas的資料結構資料結構
- Pandas缺失值處理 | 輕鬆玩轉Pandas(3)
- pandas 學習(1): pandas 資料結構之Series資料結構
- pandas 學習(2): pandas 資料結構之DataFrame資料結構
- pandas小記:pandas計算工具-彙總統計
- 每週分享第 46 期
- SQL優化常用方法46SQL優化
- Study Plan For Algorithms - Part46Go
- 46_docker-compose_nginxDockerNginx
- BUUCTF-WEB(46-50)Web
- 安卓開發日記46安卓
- 【Pandas基礎教程】第02講 Pandas讀取資料
- pandas用法總結