python - 如何在 df 列中填充无限制的数值
问题描述
所以我试图将行添加到应该遵循数字顺序 1 到 52 的数据框中
但我的数据缺少数字,所以我需要添加这些行并用 NaN 值或 null 填充这些点。
df = pd.DataFrame("Weeks": [1,2,3,15,16,20,21,52],
"Values": [10,10,10,10,50,60,70,40])
期望的输出:
Weeks Values
1 10
2 10
3 10
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
...
52 40
and so on until it reach Weeks = 52
我的解决方案:
new_df = pd.DataFrame("Weeks": "" , "Values":"")
for x in range(1,53):
for i in df.Weeks:
if x == i:
new_df["Weeks"] = x
new_df["Values"] = df.Values[i]
问题是它的效率非常低,有人知道一种以更有效的方式做到这一点的方法吗?
解决方案
您可以使用最多一周set_index
来设置Weeks
as 索引:reindex
range
df.set_index('Weeks').reindex(range(1,df.Weeks.max()))
或者也考虑最短周数:
df.set_index('Weeks').reindex(range(*df.Weeks.agg(('min', 'max'))))
Values
Weeks
1 10.0
2 10.0
3 10.0
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 10.0
16 50.0
17 NaN
...
推荐阅读
- c# - 使用带有自动映射器 MapFrom 的嵌套属性字符串
- ios - 是否有一个插件/库允许从库和 iCloud 中选择 iOS 文件?
- vim - 如何让 vim 将 $ 视为标识符字符?
- python - 为根记录器配置格式
- r - 使用 for 循环整理工作 R 代码
- arrays - 使用 Array/VLOOKUP 从列表创建总和
- codeigniter - 如何使用 sugacrm restful api 获取下拉列表键值?
- c# - 调用WEB API下载excel文件
- php - 如何在 PHP 中遍历这个键控多维数组?
- laravel-5.7 - 如何使用外键 Laravel 将 100k 条目插入 3 个表