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.

相关内容

热门资讯

刚收葡萄酒和威士忌,又瞄准黄酒... 在母公司完成对青岛饮料并购后,上市公司青岛啤酒又开始对外“买酒”,这次看中的是黄酒。 5月7日晚间,...
炒腐竹最简单的做法,炒腐竹最简... 炒腐竹最简单的做法教程 特点:食材简单、步骤少、耗时短,适合新手或快速备餐。 一、食材准备(2人份)...
痛心!30岁中国女游客五一期间... 5月7日 #一中国游客为捞相机 命丧87米深海底#的话题 引发关注 据悉,一名30岁的中国女游客在...
靖西崇左自驾游攻略:路线规划难... 启程:与天气预报的博弈(Departure: A Game with the Weather For...
【早安,海棠】5月必吃的几种水... 早安,海棠!‍ 今天是2025年5月7日‍ 星期三(农历四月初十) 海棠天气如何? 又有哪些健康小知...
摊煎饼,别光顾着调面糊,多加1... 哈喽,大家好,我又来教大家做快手早饭了。 今天教大家做薄薄脆脆的煎饼,搭配着蔬菜,用煎饼把配菜卷起来...
原创 麻... 麻辣肉片是一道经典的川菜,以其麻辣鲜香、肉质嫩滑而深受食客喜爱。这道菜的关键在于肉片的腌制、麻辣调料...
吐峪沟玩水胜地,春天溪涧清凉解... 一、初识吐峪沟 春天的气息悄然弥漫,阳光洒在大地上,为万物披上一层金色的薄纱。周末清晨,我和好友小林...
洪江融媒丨【不去远方 就来洪江... 今年“五一”假期,洪江市以丰富文旅活动与独特景观吸引游客60.96万人次,实现旅游收入10045.9...
贵阳各区市县“五一”旅游成绩单... 2025年“五一”假期,贵阳各区市县文旅活动精彩纷呈。云岩区音乐与美食激活旅游热潮,南明区音乐市集与...
原创 朱... 嘿,亲爱的家人们,五一小长假简直成了明星们的“自由日”!熟悉的主持人朱丹也带着宝贝儿子飞奔到海南,开...
别再犹豫了!解锁深圳N种玩法,... 喂喂喂!各位在水泥森林里辛勤耕耘的“打工人”们,五一小长假你们是在家“葛优瘫”刷手机,还是勇敢地加入...
周末母亲节,打算陪老妈过节,做... 这个周末就是母亲节了,这次打算回老家陪母亲过节。民以食为天这句话说的没错,不管日子过得如何,总是少不...
酸奶消费警示提示 为帮助广大消费者 正确选购酸奶 玉溪市市场监督管理局 玉溪市消费者协会 发布如下消费提示 一、选购酸...
原创 比... 导语:比芋头便宜、比红薯营养,夏天要使劲吃!一养颜、二补钾、三润肠 大家好,我是傻姐美食,春夏秋冬,...
当孩子爱上烘焙,成绩不好也不是... 作为家长,孩子成长路上的每一个转折点都牵动着我的心。孩子初中成绩不理想,中考后进入技工类学校,本以为...
28款家常菜谱推荐,营养健康又... 在忙碌的生活中,为家人准备一顿营养健康又美味的家常饭菜,是一份无比温馨的心意。接下来,为您推荐 28...
阜新十大特色名菜,一口咬下去全... 要说辽宁哪个城市最有“隐藏剧情”,阜新必须榜上有名。 这地儿早在辽代就是契丹王朝的“中京”,也就是陪...