pandas - Pandas 插值:{ValueError}无效的填充方法。期待填充 (ffill) 或回填 (bfill)。得到线性
问题描述
我正在尝试插入时间序列数据,df
看起来像:
id data lat notes analysis_date
0 17358709 NaN 26.125979 None 2019-09-20 12:00:00+00:00
1 17358709 NaN 26.125979 None 2019-09-20 12:00:00+00:00
2 17352742 -2.331365 26.125979 None 2019-09-20 12:00:00+00:00
3 17358709 -4.424366 26.125979 None 2019-09-20 12:00:00+00:00
我尝试:df.groupby(['lat', 'lon']).apply(lambda group: group.interpolate(method='linear'))
,它抛出{ValueError}Invalid fill method. Expecting pad (ffill) or backfill (bfill). Got linear
我怀疑问题在于我有None
价值观,我不想插入这些价值观。解决办法是什么?
df.dtypes
给我:
id int64
data float64
lat float64
notes object
analysis_date datetime64[ns, psycopg2.tz.FixedOffsetTimezone...
dtype: object
解决方案
DataFrame.interpolate
时区感知 datetime64ns 列存在问题,这导致了相当神秘的错误消息。例如
import pandas as pd
df = pd.DataFrame({'time': pd.to_datetime(['2010', '2011', 'foo', '2012', '2013'],
errors='coerce')})
df['time'] = df.time.dt.tz_localize('UTC').dt.tz_convert('Asia/Kolkata')
df.interpolate()
ValueError:无效的填充方法。期待填充 (ffill) 或回填 (bfill)。得到线性
在这种情况下,不需要插入该列,因此只需插入您需要的列。我们仍然想要DataFrame.interpolate
这样选择[[ ]]
(Series.interpolate
导致一些奇怪的重塑)
df['data'] = df.groupby(['lat', 'lon']).apply(lambda x: x[['data']].interpolate())
推荐阅读
- javascript - 如何关闭地图标记聚类?
- excel - 如何格式化 Angular 下 xlsx 包生成的工作簿中的单元格
- c# - asp.net aspx OnClick 在客户端服务过程中单击时不会触发
- c - 在 libcurl/RTSP 之后 pthread_create 时在 genops 中出现段错误
- python - 我需要一个 epub 到 Python 中的文本解决方案
- c - 所有数组元素在 C 中都是相同的 fgets 吗?
- automated-tests - 模拟器中的 Appium ToggleWiFi 停止测试
- postman - Postman 请求正文中的文件未保存在集合中
- ruby - Faker gem 生成 2-3 个字母字符串
- python - 数组就地旋转器返回错误值