python - 重新索引用 NaN 替换值
问题描述
我正在尝试在数据框中填写缺失的时间。当我重新索引时,缺失的时间被填充,但我的原始值消失了,一切都变成了 NaN。我的代码如下:
data = {'date':["2010-03-01 00:03:00","2010-03-01 00:05:00"], 'num':["1","2"]}
df_test = pd.DataFrame(data,columns = ['date','num'])
pd.to_datetime(df_test['date'], format='%Y-%m-%d %H:%M:%S')
df_test.set_index('date', inplace=True)
df_test2 = df_test.reindex(pd.date_range(df_test.index[0], df_test.index[-1], freq='Min'))
df_test
num
date
2010-03-01 00:03:00 1
2010-03-01 00:05:00 2
df_test2
num
2010-03-01 00:03:00 NaN
2010-03-01 00:04:00 NaN
2010-03-01 00:05:00 NaN
解决方案
这里有必要将转换后的列分配给datetimes
,因为to_datetime
不能就地工作:
data = {'date':["2010-03-01 00:03:00","2010-03-01 00:05:00"], 'num':["1","2"]}
df_test = pd.DataFrame(data,columns = ['date','num'])
df_test['date'] = pd.to_datetime(df_test['date'], format='%Y-%m-%d %H:%M:%S')
df_test.set_index('date', inplace=True)
df_test2 = df_test.reindex(pd.date_range(df_test.index[0], df_test.index[-1], freq='Min'))
print (df_test2)
2010-03-01 00:03:00 1
2010-03-01 00:04:00 NaN
2010-03-01 00:05:00 2
另一个解决方案DataFrame.asfreq
:
df_test2 = df_test.asfreq('Min')
print (df_test2)
num
date
2010-03-01 00:03:00 1
2010-03-01 00:04:00 NaN
2010-03-01 00:05:00 2
推荐阅读
- javascript - 我期待一个函数返回一个字符串,但似乎返回未定义。它没有通过摩卡测试
- python - TF 数据集是否有等效的 tf.gather() ?
- javascript - 仅使用 php、html 和 vanila js 将 TimeZone 放在两个选择标签中
- python - 如何从 MQ 系统中的服务器获取响应(python)
- html - 使用标签构建进度条
- cypress - 如何在 Cypress 中获取隐藏元素的 HTML?
- java - 底部导航菜单 onClick 图标选择
- c# - 使用 wpf 按子类别过滤订单表
- android - 错误:Android Gradle 插件仅支持 Butterknife Gradle 插件版本 9.0.0-rc2 及更高版本
- php - 无法将数据库中的字段加载到组合框