- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
请帮帮我。我想基于 1D 重新采样。我有以下格式的数据。我想在 Pandas 中使用重采样。
我想根据日期和产品重新采样并填充缺失值。
但我一直犯这个错误:我尝试了 5 个选项,错误只在“instance of”之后发生了变化:我看到了 Multiindex,Index。
TypeError:仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但得到了“RangeIndex”的实例
product value date
A 1.52 2016-01-01
A NULL 2016-09-20
A 1.33 2018-08-02
B 1.30 2016-01-01
B NULL 2017-01-02
B 1.54 2017-03-10
B 2.08 2017-06-28
B 2.33 2018-08-02
我把这些数据放入
df.reset_index().set_index('date','sku')
df= df.groupby('product').resample('1D')['value'].ffill().bfill().ffill()
我也试过:
df = df.set_index(['date','sku'])
df = df.set_index('date','sku')
df = df.reset_index().set_index(['date','sku'])
拜托,你能解释一下我做错了什么吗?谢谢!
今天早上它正在处理这些数据和来自 Jezrael 的命令:
df = df.set_index('date').groupby('product').resample('1D')['value'].ffill()
product value date
0 A 1.52 2016-01-01
1 A NaN 2016-09-20
2 A 1.87 2018-08-02
3 B 2.33 2016-01-01
4 B NaN 2016-09-20
5 B 4.55 2018-08-02
但突然间它不再存在了。现在我在错误语句中有索引。
最佳答案
如果使用 DataFrameGroupBy.resample
,您需要 DatetimeIndex
, bfill
也被省略了,因为如果一些只有 NaN
的组是可能的,这些数据将被其他组替换:
#if necessary convert to datetimes
#df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date').groupby('product').resample('1D')['value'].ffill()
print (df)
product date
A 2016-01-01 1.52
2016-01-02 1.52
2016-01-03 1.52
2016-01-04 1.52
2016-01-05 1.52
2016-01-06 1.52
2016-01-07 1.52
2016-01-08 1.52
2016-01-09 1.52
2016-01-10 1.52
2016-01-11 1.52
2016-01-12 1.52
更改示例以获得更好的解释:
print (df)
product value date
0 A 1.52 2016-01-01
1 A NaN 2016-01-03
2 B NaN 2017-01-02
3 B NaN 2017-01-03
4 C 1.54 2017-03-10
5 C 2.08 2017-03-12
6 C 2.33 2017-03-14
df1 = df.set_index('date').groupby('product').resample('1D')['value'].ffill()
print (df1)
product date
A 2016-01-01 1.52
2016-01-02 1.52
2016-01-03 NaN < NaN is not changed because in original data
B 2017-01-02 NaN <- only NaN group B
2017-01-03 NaN
C 2017-03-10 1.54
2017-03-11 1.54
2017-03-12 2.08
2017-03-13 2.08
2017-03-14 2.33
Name: value, dtype: float64
df11 = df.set_index('date').groupby('product').resample('1D')['value'].ffill().bfill()
print (df11)
product date
A 2016-01-01 1.52
2016-01-02 1.52
2016-01-03 1.54 <- back filling value from group C
B 2017-01-02 1.54 <- back filling value from group C
2017-01-03 1.54 <- back filling value from group C
C 2017-03-10 1.54
2017-03-11 1.54
2017-03-12 2.08
2017-03-13 2.08
2017-03-14 2.33
Name: value, dtype: float64
关于python - Pandas 重采样 : TypeError: Only valid with DatetimeIndex, TimedeltaIndex 或 PeriodIndex,但得到了 'RangeIndex' 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51656065/
我可以像这样创建季度和月度 PeriodIndex: idx = pd.PeriodIndex(year=[2000, 2001], quarter=[1,2], freq="Q") # quarte
我的数据框的列为季度(PeriodIndex) - 例如。 2010 年第一季度、2010 年第二季度。此外,还有多个同名列,因为我已将每月数据转换为季度数据。我想要从 2011 年第 1 季度开始的
我正在尝试使用重新采样周期的初始值,以便与 first() 和 last() 一起使用。例如,我从每日数据开始,然后重新采样为每月数据: df.resample('M', kind='period')
我有一个 DataFrame,其中列是按月的 PeriodIndex,如下所示: df = pd.DataFrame(np.random.randn(3,4), index = np.arange(3
Pandas Series.to_json()函数在使用 PeriodIndex 时创建不可读的 JSON。 发生的错误是:json.decoder.JSONDecodeError: Expectin
我正在尝试获取多索引数据框中的最后一个可行日期: ix = pd.MultiIndex.from_product([["a"], pd.PeriodIndex(start="2017-01", end
我希望使用 periodIndex 系列并创建一个新系列,以“yyyy/yy”格式显示当前财政年度。例如,以英国财政年度为例 -> 01/04 至 31/03。 df = pd.DataFrame
pandas.PeriodIndex 上的文档举如下构造示例: >>> idx = PeriodIndex(year=year_arr, quarter=q_arr) 并指定这两个参数的类型: yea
我有一个关于将 tseries.period.PeriodIndex 转换为日期时间的问题。 我有一个如下所示的 DataFrame: colors count
我在绘制具有 PeriodIndex 的 pandas 数据框时遇到问题。 我的数据存在差距,我希望实现以下目标: 间隙应保持间隙,不进行插值; 由于每个值在整个时间段内都有效,因此该值应在整个时间段
在 DataFrame 上使用 panda 的 resample 函数以将刻度数据转换为 OHLCV 时,遇到重采样错误。 我们应该如何解决这个错误? data = pd.read_csv('tick
我正在处理一些组织为带有 MultiIndex 的 df 的财务数据。包含股票代码和日期以及包含返回的列。我想知道是否应该将索引转换为 PeriodIndex而不是 DateTimeIndex因为返回
我正在尝试将 2 个数据帧合并在一起。具有讽刺意味的是,它们最初是同一个数据框的一部分,但我正在迈出一小步——有时是在错误的方向上。第 1 帧看起来像这样: Int64Index: 10730 ent
我在 Python 中有一个 pandas 数据框,其中有一列如下: df.Timestamp ... .................. 129 2018-09-12 21:40:00
我正在尝试对常用的航空公司乘客数据集运行基本的season_decompose,该数据集以以下行开头: Month 1949-02 4.770685 1949-03 4.882802 19
我有一些要分析的订单数据。 目前感兴趣的是:哪个SKU在哪个月被购买的频率? 这里有一个小例子: import datetime import pandas as pd import numpy as
我在 pandas 中有这个数据框 key date story_point Story point 0 SOF-15
file_location3 = "F:/python/course1_downloads/City_Zhvi_AllHomes.csv" housing = pd.read_csv(file_loc
请帮帮我。我想基于 1D 重新采样。我有以下格式的数据。我想在 Pandas 中使用重采样。 我想根据日期和产品重新采样并填充缺失值。 但我一直犯这个错误:我尝试了 5 个选项,错误只在“instan
我是一名优秀的程序员,十分优秀!