- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们正在尝试通过列表重新索引数据帧,如下所示:
dataframe.reindex(list)
其中确切的数据框和列表并不重要。
现在,如果列表大于原始索引,就会出现一些 NaN。我的问题是,如果我想通过前向填充来填充 NaN,以下两种方法有什么区别:
dataframe.reindex(list, method='ffill')
dataframe.reindex(list).ffill()
我尝试了几次,发现结果不同。
假设我们的数据框是:
Jan 1
Apr 2
Jul 3
Oct 4
列表是:
列表 = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月' ]
所以,
dataframe.reindex(list, method='ffill')
变成:
Jan 1
Feb 2
Mar 3
Apr 2
May 3
Jun 3
Jul 3
Aug 2
Sep 4
Oct 4
Nov 3
Dec 2
鉴于,
dataframe.reindex(list).ffill()
变成:
Jan 1
Feb 1
Mar 1
Apr 2
May 2
Jun 2
Jul 3
Aug 3
Sep 3
Oct 4
Nov 4
Dec 4
我不明白这两种方式有何不同?第一种方式会产生什么,第二种方式会产生什么?
我尝试查找文档和其他来源,但找不到解释。预先非常感谢。
最佳答案
编辑:
在 pandas 0.24.1 版本中引发错误:
print (dataframe)
Col
Jan 1
Apr 2
Jul 3
Oct 4
print (dataframe.index.is_monotonic_increasing)
False
L = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
print (dataframe.reindex(L, method='ffill'))
ValueError: index must be monotonic increasing or decreasing
在文档中 - DataFrame.reindex
:
method : {None, 'backfill'/'bfill', 'pad'/'ffill', 'nearest'}
Method to use for filling holes in reindexed DataFrame. Please note: this is only applicable to DataFrames/Series with a monotonically increasing/decreasing index.None (default): don't fill gaps pad / ffill: propagate last valid observation forward to next valid backfill / bfill: use next valid observation to fill gap nearest: use nearest valid observations to fill gap
第二次工作很好:
print (dataframe.reindex(L).ffill())
Col
Jan 1.0
Feb 1.0
Mar 1.0
Apr 2.0
May 2.0
Jun 2.0
Jul 3.0
Aug 3.0
Sep 3.0
Oct 4.0
Nov 4.0
Dec 4.0
<小时/>
注意 - 不要使用 list
之类的变量,因为 python 保留字(内置)。
区别在于在重新索引
之前列中是否存在缺失值:
dataframe = pd.DataFrame({'col':[0,2,np.nan,5,np.nan]}, index=[1,3,5,6,8])
print (dataframe)
col
1 0.0
3 2.0
5 NaN
6 5.0
8 NaN
print (dataframe.index.is_monotonic_increasing)
True
如果使用参数,则仅前向填充添加的行,此处为 1,4,7 行。
如果链ffill
则创建缺失值并且Series的所有数据都是前向填充:
L = range(10)
df = pd.concat([dataframe.reindex(L, method='ffill'),
dataframe.reindex(L),
dataframe.reindex(L).ffill()],
keys=('parameter','only_reindex','chained'), axis=1)
print (df)
parameter only_reindex chained
col col col
0 NaN NaN NaN
1 0.0 0.0 0.0
2 0.0 NaN 0.0
3 2.0 2.0 2.0
4 2.0 NaN 2.0
5 NaN NaN 2.0
6 5.0 5.0 5.0
7 5.0 NaN 5.0
8 NaN NaN 5.0
9 NaN NaN 5.0
<小时/>
如果没有缺失值结果相同:
dataframe = pd.DataFrame({'col':[0,2,8,5,9]}, index=[1,3,5,6,8])
print (dataframe)
col
1 0
3 2
5 8
6 5
8 9
print (dataframe.index.is_monotonic_increasing)
True
L = range(10)
df = pd.concat([dataframe.reindex(L, method='ffill'),
dataframe.reindex(L),
dataframe.reindex(L).ffill()],
keys=('parameter','only_reindex','chained'), axis=1)
print (df)
parameter only_reindex chained
col col col
0 NaN NaN NaN
1 0.0 0.0 0.0
2 0.0 NaN 0.0
3 2.0 2.0 2.0
4 2.0 NaN 2.0
5 8.0 8.0 8.0
6 5.0 5.0 5.0
7 5.0 NaN 5.0
8 9.0 9.0 9.0
9 9.0 NaN 9.0
关于python - python 中的 ffill 作为链式方法和作为参数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54703868/
我认为我在概念上遗漏了一些基本概念,但我无法在文档中找到答案。 >>> df=pd.DataFrame({'a':[1,1,2,2,3,3], 'b':[5,np.nan, 6, np.nan, np
我有一个这样的 df: Key Class 1 Green 1 NaN 1 NaN 2 Red 2 NaN 2 NaN 我想转发填充
我正在尝试将我的数据从每天频率上采样到每小时频率,并正向填充缺失数据。 我从以下代码开始: df1 = pd.read_csv("DATA.csv") df1.head(5) 然后我使用以下内容转
在“用于数据分析的 Python”一书中,有一个使用 pandas 的 Series 数据结构进行重新索引的示例。我将这个简单的代码复制到 iPython 笔记本中并运行它,但它没有改变 obj3。
我想要与 pandas dataframe.fillna('ffill') 方法完全相同的行为,但我不想使用最后一个非 NaN 值,而是想自己选择值,例如 [NaN, NaN, NaN, 1, 2,
这是我的初始df China USA 2009 NaN -9 2010 1.2 8 2011 1.5 NaN 2014 5.0 NaN 2015
此页面似乎是文档 pad和 ffill好像它们是同义词。 https://pandas.pydata.org/pandas-docs/stable/missing_data.html 两者之间有什么区
假设我们正在尝试通过列表重新索引数据帧,如下所示: dataframe.reindex(list) 其中确切的数据框和列表并不重要。 现在,如果列表大于原始索引,就会出现一些 NaN。我的问题是,如果
我有以下数据框: id indicator 1 NaN 1 NaN 1 1 1 NaN 1
假设我有一个如下所示的数据框: df = 0 1 2 0 1.0 2.0 3.0 1 4.0 5.0 NaN 2 6.0 NaN NaN 然后可
我有一个大型数据框(400,000 多行),如下所示: data = np.array([ [1949, '01/01/2018', np.nan, 17, '30/11/
我想每小时重新采样一个年度数据帧,包括去年。我怎样才能有效地做到这一点? 我有以下数据框: df2 = pd.DataFrame({'col' : [2, 3]}, index=['2018', '2
假设我有以下 DataFrame: df = pd.DataFrame({'player': ['LBJ', 'LBJ', 'LBJ', 'Kyrie', 'Kyrie', 'LBJ', 'LBJ']
我有一个 MultIndex 数据帧,并尝试填充一个值 MAX_PTS_YR,以便 t+1 年的 MAX_PTS_YR 值 > 等于 t 中的 MAX_PTS_YR。 因此:2016 中的 MAX_P
我希望在我的 pandas 数据框中转发填充一些值,但有一个限制。但是,限制只需要填充连续 nan 计数小于或等于限制的 nan 组。这是一个例子, 创建一个缺少数据的df, import numpy
有没有办法对不是NaN的值使用ffill方法? 我的数据框中有 NaN,但我使用 添加了这些 NaN addNan = sample['colA'].replace(['A'], 'NaN') 这就是
我有一个这样的数据框: A B C E D --------------- 0 a r g g 1 x 2 x f f r 3
我有以下带有一些缺失值的 DataFrame。我想使用 ffill() 来填充 var1 和 var2 中的缺失值,按 date 和 分组>建筑。我一次可以对一个变量执行此操作,但是当我尝试对两个变量
我使用的 pandas 版本是'0.20.1',python 3 虽然有两个问题: question1 , question2 被问到同样的错误,而我发现这两个问题和我的情况不一样。 数据来源于《数据
我有一个数据框,其中的片段看起来像这样 Time Temperature 19 2019-01-01 11:48:51 23.798 20 2
我是一名优秀的程序员,十分优秀!