pandas reindex 方法
admin
2024-04-12 05:52:54
0

pandas.Series.reindex

reindex 方法会创建一个新对象,并根据给定的新 index 对原来 Series 的数据重新组织。如果新 index 中有原来 index 不存在的 label,那么这些 label 对应位置会被填充 NaN

import pandas as pd
import numpy as nps1 = pd.Series([4.5, 7.2, 6.6, 5.8], index=['d', 'a', 'c', 'b'])
s1
"""
d    4.5
a    7.2
c    6.6
b    5.8
dtype: float64
"""
s2 = s1.reindex(['a', 'b', 'c', 'd', 'e'])
s2
"""
a    7.2
b    5.8
c    6.6
d    4.5
e    NaN
dtype: float64
"""

通常我们想对 NaN 的位置填充一些值,这可以通过 reindex 方法的 method 参数来实现。

method{None, ‘backfill’/’bfill’, ‘pad’/’ffill’, ‘nearest’}

pad/ffill:会将上一个非 NaN 的值填充到此位置;

backfill/bfill:会将下一个非 NaN 的值填充到此位置;

nearest:会将最靠近的非 NaN 的值填充到此位置

s3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
s3
"""
0      blue
2    purple
4    yellow
dtype: object
"""
s3.reindex(range(6), method='ffill')
"""
0      blue
1      blue
2    purple
3    purple
4    yellow
5    yellow
dtype: object
"""

如果我们想要在 NaN 位置填充自己想要的值,可以传入 fill_value 参数:

s3.reindex(range(6), fill_value='red')
"""
0      blue
1       red
2    purple
3       red
4    yellow
5       red
dtype: object
"""

pandas.DataFrame.reindex

对于 DataFrame,reindex 方法既可以改变行标(index),也可以改变列标(column),或者两者同时改变。

df = pd.DataFrame(np.arange(9).reshape((3, 3)),index=['a', 'c', 'd'],columns=['BeiJ', 'ShangH', 'shenZ'])
print(df)
"""BeiJ  ShangH  shenZ
a     0       1      2
c     3       4      5
d     6       7      8
"""

如果 reindex 中只传入一个序列,那么默认会改变 index

df.reindex(['a', 'b', 'c', 'd'])
"""BeiJ  ShangH  shenZ
a   0.0     1.0    2.0
b   NaN     NaN    NaN
c   3.0     4.0    5.0
d   6.0     7.0    8.0
"""

如果想要改变列标,那么可以指定 columns 关键字:

df.reindex(columns=['BeiJ', 'XiA', 'shenZ'])
"""BeiJ  XiA  shenZ
a     0  NaN      2
c     3  NaN      5
d     6  NaN      8
"""

DataFrame 的 reindex 方法也有 methodfill_value 参数,含义与之前相同。

下面我们看这样一个例子:

date_index = pd.date_range('1/1/2023', periods=6, freq='D')
df = pd.DataFrame({"prices": [100, 101, np.nan, 100, 89, 88]},index=date_index)
print(df)
"""prices
2023-01-01   100.0
2023-01-02   101.0
2023-01-03     NaN
2023-01-04   100.0
2023-01-05    89.0
2023-01-06    88.0
"""

df 进行扩充:

date_index2 = pd.date_range('12/29/2022', periods=10, freq='D')
df.reindex(date_index2)
"""prices
2022-12-29     NaN
2022-12-30     NaN
2022-12-31     NaN
2023-01-01   100.0
2023-01-02   101.0
2023-01-03     NaN
2023-01-04   100.0
2023-01-05    89.0
2023-01-06    88.0
2023-01-07     NaN
"""

如果使用 bfill 填充 NaN

df.reindex(date_index2, method='bfill')
"""prices
2022-12-29   100.0
2022-12-30   100.0
2022-12-31   100.0
2023-01-01   100.0
2023-01-02   101.0
2023-01-03     NaN
2023-01-04   100.0
2023-01-05    89.0
2023-01-06    88.0
2023-01-07     NaN
"""

注意到有两个 NaN 并没有被填充。最后一个 NaN 未被填充是因为它后面没有可供 bfill 来填充的值了。而中间的 NaN 则是因为原本的 df 该位置的值就为 NaNreindex 中的填充 method 不会对此进行填充。


References

[1] NumPy Reference. https://numpy.org/doc/stable/reference/index.html
[2] Python for Data Analysis, 2nd^{\rm nd}nd edition. Wes McKinney.

相关内容

热门资讯

原创 清... 清晨的阳光透过窗帘缝隙洒进厨房,玻璃杯上凝结的水珠缓缓滑落。冰箱门打开的瞬间,冷气裹挟着奶香扑面而来...
见识了预制米饭里的黑科技,打工... “大米,水。” 我再三确认了配料表,“常温保存9个月?” 等等,这合理么? 面对手里写着“鲜米饭”...
天热这么吃鸭,清爽解腻,真有一... 大部分人喜欢吃鸭子,鸭肉性寒,清热养胃,很适合燥热的吃货们,尤其是火气旺,容易上火的。 于是乎就有了...
原创 厨... 清晨的阳光透过纱帘洒进厨房,铸铁锅在灶台上微微冒着热气。记得小时候,每当外婆开始准备早餐,整个屋子都...
原创 一... 晨光中的米香 清晨的阳光透过厨房的纱帘,在灶台上投下斑驳的光影。电饭煲的蒸汽孔正缓缓吐出白色的雾气...
文化中国行|徐州淮海战役纪念馆... 现代快报讯(记者 张晓培 文/摄)盛夏的徐州,烈日炙烤着大地,热浪在空气中不断翻涌,可游客们的热情却...
【温馨提示】房山区启动防汛三级... 2025年7月27日11时房山区已启动防汛三级应急响应,为保障市民游客安全,目前,房山区周口店遗址、...
一家人去北京5日攻略费用,北京... 北京,这座古老与现代交织的城市,以其丰富的历史文化遗产和现代化的都市风貌吸引着无数游客的目光。从宏伟...
四川结伴自由行五天导游推荐,成... 四川,这片位于中国西南的神奇土地,自古以来就是人文与自然景观交相辉映的宝地。从巍峨的雪山到蜿蜒的江河...
情侣到四川玩五天花多少钱,组团... 四川,这片位于中国西南的神奇土地,以其独特的自然风光、悠久的历史文化和丰富的民族风情而闻名遐迩。从成...
跟团去北京4天3晚多少钱,北京... 北京,这座古老而现代交织的城市,不仅是中国的政治文化中心,更是一座充满历史韵味与现代活力的国际大都市...
和父母去四川5日游详细攻略,成... 自从有了孩子,我们的旅行计划就总是围绕着“亲子”这个主题展开。四川,这个充满自然美景和人文底蕴的地方...
四川旅游4天3晚报团多少钱,成... 宝子们,四川,这片充满魅力的土地,宛如一幅绚丽多彩的画卷,在祖国的西南地区徐徐展开。它有着“天府之国...
四川旅游5天攻略,去成都5天4... 四川,这片古老而又充满活力的土地,宛如一颗镶嵌在中国西南的璀璨明珠,散发着独特的魅力。它既有“蜀道之...
北京五日游跟团攻略,报团去北旅... 在旅游热潮不断升温的当下,北京作为中国的首都,凭借着深厚的历史文化底蕴、壮丽的名胜古迹以及繁华的都市...
定制白酒出货 这是(li460220)整理的信息,希望能帮助到大家 在白酒行业中,出货量的稳定增长不仅关系到企业的...
原创 孩... 锅贴,大家应该都吃过吧?很多人觉得锅贴和饺子差不多,其实它们的口感完全不一样。锅贴最吸引人的地方,就...
广元美食攻略全收录 广元,位于四川省东北部,素有“天府之国的东大门”之称,不仅拥有丰富的自然资源和深厚的文化底蕴,还因其...
“盛世中国•艺术茅台”——书法... 特邀名家 潘军 潘军:男,一九五0年出生,中学高级教师【副高】。 艺术珍藏酒 ▲献礼华诞 ...