python - Python pandas:如何在数据框列中的现有值之间填充值?
问题描述
我有一个带有 3 列的 pandas DataFrame。第一列包含以特定频率升序排列的字符串值(e.g. '20173070000', '20173070020', '20173070040', etc.)
。第二列和第三列包含对应的整数值。我想将第一列重新采样到每个列 - '20173070000'、'20173070001'、'20173070002',同时用NaN
值填充第二列和第三列,然后我想插入这些NaN
值。
我已经研究过重新采样数据,但这似乎只适用于timedate
值。我还研究了 pd.interpolate,但这似乎适用于在缺失值之间进行插值。如上所述,我的数据集不包含缺失数据。我只是想增加我的条目的频率 - 在现有值之间填充。
为了提供一些参考,我当前的 DataFrame 如下所示:
0 1 2
0 20173070000 14.0 13.9
1 20173070020 14.1 14.1
2 20173070040 13.8 13.6
3 20173070060 13.7 13.7
4 20173070080 13.8 13.5
5 20173070100 13.9 14.0
我想生成一个如下所示的 DataFrame:
0 1 2
0 20173070000 14.0 13.9
1 20173070001 NaN NaN
2 20173070002 NaN NaN
3 20173070003 NaN NaN
4 20173070004 NaN NaN
5 20173070005 NaN NaN
...
20 20173070020 14.1 14.1
21 20173070021 NaN NaN
...
之后我对插值进行排序没有问题,但我还没有弄清楚如何上采样。
解决方案
您可以只使用重新索引功能。默认情况下,它将 NaN 放置在“新”索引中没有值的位置。
df = pd.DataFrame({'A': [20173070000, 20173070020, 20173070040, 20173070060, 20173070080, 20173070100 ],
'B': [14, 14.1, 13.8, 13.7, 13.8, 13.9],
'C': [13.9, 14.1, 13.6, 13.7, 13.5, 14.0] })
df.set_index('A').reindex(np.arange(np.min(df.A), np.max(df.A)+1) ).reset_index()
推荐阅读
- python - 计算python pandas中范围突破的平均真实范围?
- android - 在 Android Studio 中处理位图的问题
- android - 加密共享偏好数据
- python - skimage profile_line 没有意义
- listview - 如果您已经有列表视图构建器,如何添加可重新排序的列表视图
- selenium-webdriver - webdriverIO中isElementDisplayed vs toBeDisplayed vs isDisplayed vs waitForDisplayed之间的区别?
- ios - 我可以使用相同的上下文在 coredata 中保存两个实体吗?
- bash - 无法在我的 docker 容器中启动脚本
- angularjs - 如何将 JSON 和图像文件发送到服务器?
- javascript - (节点:31260)UnhandledPromiseRejectionWarning