重新索引并填充 PySpark 中缺失的日期

2023-12-02

有没有办法填充 PySpark 中缺少的列日期和行值?目前,我将数据帧转换为 Pandas 并在那里重新索引。

sdf.show()

+---+----------+----------+----------+
| id|2018-01-01|2018-01-03|2018-01-05|
+---+----------+----------+----------+
| 1 |       0.0|       1.0|       0.0|
| 2 |       4.0|       2.0|       0.0|
| 3 |       0.0|       1.0|       1.0|
| 7 |       0.0|       2.0|       9.0|
| 8 |       8.0|       0.0|       0.0|
| 9 |       0.0|       0.0|       3.0|
+---+----------+----------+----------+

idx = pd.date_range('01-01-2018', '01-07-2018').date    
df = sdf.toPandas()
df = df.set_index('id')
df = df.reindex(idx, axis=1, fill_value=0)

我在 PySpark 中找不到类似的东西。

期望的输出:

+---+----------+----------+----------+----------+----------+
| id|2018-01-01|2018-01-02|2018-01-03|2018-01-04|2018-01-05|
+---+----------+----------+----------+----------+----------+
| 1 |       0.0|       0.0|       1.0|       0.0|       0.0|
| 2 |       4.0|       0.0|       2.0|       0.0|       0.0|
| 3 |       0.0|       0.0|       1.0|       0.0|       1.0|
| 7 |       0.0|       0.0|       2.0|       0.0|       9.0|
| 8 |       8.0|       0.0|       0.0|       0.0|       0.0|
| 9 |       0.0|       0.0|       0.0|       0.0|       3.0|
+---+----------+----------+----------+----------+----------+

您可以使用lit()到中的值idx数据框中尚未存在。

注意我已将列转换为字符串只是为了测试:

ids = [str(i) for i in idx] #may not be required
to_add = [col for col in ids if col not in df.columns]
out = df.select(df.columns+ [lit(0).alias(name) for name in to_add])
out.show()

+---+----------+----------+----------+----------+----------+----------+----------+
| id|2018-01-01|2018-01-03|2018-01-05|2018-01-02|2018-01-04|2018-01-06|2018-01-07|
+---+----------+----------+----------+----------+----------+----------+----------+
|  1|       0.0|       1.0|       0.0|         0|         0|         0|         0|
|  2|       4.0|       2.0|       0.0|         0|         0|         0|         0|
|  3|       0.0|       1.0|       1.0|         0|         0|         0|         0|
|  7|       0.0|       2.0|       9.0|         0|         0|         0|         0|
|  8|       8.0|       0.0|       0.0|         0|         0|         0|         0|
|  9|       0.0|       0.0|       3.0|         0|         0|         0|         0|
+---+----------+----------+----------+----------+----------+----------+----------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重新索引并填充 PySpark 中缺失的日期 的相关文章

随机推荐

  • 如何使用 RavenDB 中的自定义 JSON.NET 转换器反序列化为动态 DLL 中的类型?

    我的 RavenDB 对象是根据动态加载的 DLL 中的类型创建的 我无法将 DLL 加载到当前的执行上下文中AppDomain 因此 JSON 反序列化器无法找到类型 我将如何使用定制转换器使用运行时加载的程序集中的类型 NB I tri
  • 如何创建一个动态相等实现,您可以在其中传递要比较的属性名称?

    假设我有一个具有以下属性的对象 Person public class Person public int ID get set public int EmployeeNo get set public string JobDescript
  • 矢量::插入分段错误

    我有一堂这样的课 classA public classA Here I am doing something but nothing related to vector void updateVec int idx int value H
  • 水平对齐三张图像(只能将它们垂直对齐)

    我似乎真的缺少一些关于如何使用 CSS 在屏幕上的一个块中水平排列三个图像的信息 我似乎只能将它们在页面上排成一长行 当我真的希望它们以水平线穿过屏幕时 我的 div 哪里做错了 或者也许我在 CSS 中被引入歧途 有任何想法吗 太感谢了
  • 为什么在 C++ 中输入 void main() 不好 [重复]

    这个问题在这里已经有答案了 可能的重复 void main 和 int main 之间的区别 Why is void main return void bad 有一天 我输入了此内容 有人向我指出这样做是错误的 我很困惑 我这样写已经有一段
  • 如何在顶点着色器中使用计时器来为 OpenGL 中的点大小设置动画

    我正在尝试实现一个点云 其中不同点的大小应根据与其相关的不确定性值而变化 比方说 如果这个值为零 则大小应该是恒定的 如果它接近 1 则这些点的半径应该变化得越来越大 首先 点的大小应该增加 并且在达到最大值后 它们应该减小直到最小值 依此
  • C++-单例类

    单例类可以被继承吗 如果是 那我们该怎么办呢 编辑 我的意思是说 如果我们有一个使用单例设计模式的类 那么它可以被继承吗 单例有私有构造函数 因此继承是不可能的 除此之外 单例具有实例化私有实例成员的静态方法 并且由于您无法覆盖静态方法 因
  • Python 中带有键的 sort_values()

    我有一个数据框 其中列名称是时间 0 00 0 10 0 20 23 50 现在 它们按字符串顺序排序 因此 0 00 是第一个 9 50 是最后一个 但我想在时间之后对它们进行排序 所以 0 00 是第一个 23 50 是最后一个 If
  • 正则表达式捕获组 swift

    我在字符串中有一个正则表达式搜索方法 extension String func searchRegex regex String gt Array
  • 旋转后恢复倒计时

    我有一个从 60 秒开始倒计时的倒计时器 这个倒计时器通过将文本视图设置为剩余毫秒来工作 但是每当我旋转设备时 倒计时器就会重置 我知道发生这种情况是因为活动会轮流重新启动 因此 我尝试将剩余的时间保存在捆绑包中 然后在活动重新启动后恢复它
  • 使用 SQL 查询查找订购 > x 种产品的客户的详细信息

    请注意 我见过类似的查询here 但认为我的查询足够不同 值得提出一个单独的问题 假设有一个包含以下表的数据库 customer table 包含 customer ID 关键字段 customer name 包含 order ID 关键字
  • 无法使用 Google Calendar Api v3 获取访问令牌

    我正在尝试将日历事件放入日历中 而无需身份验证提示 我读到 使用 OAuth 服务帐户可以让您执行此操作 我已经在我的 Google 开发者控制台中设置了服务帐户 但对此没有任何运气 我们有一个 Google 企业帐户 我将我的委托用户设置
  • 使用 PHP 解析 JSON

    我从服务源中提取了以下 JSON 内容 global event ending at 2011 11 07T02 00 00Z short url http bit ly reAhRw created at 2011 10 04T14 25
  • Android 无法识别 Firebase“createCustomToken”

    我正在实施 使用自定义令牌登录 我在以下位置找到了这段代码Firebase 文档 firebaseAuth createCustomToken uid addOnSuccessListener new OnSuccessListener
  • Jsoup从css获取背景图像路径

    我正在寻找给定网站上的所有图像 为此 我需要找到 css 中的内容 例如 gk crop background image url images style1 g rss 2 png 现在我的问题是如何使用 JSoup 获取所有这些 url
  • 无法使用“(T,来自:数据)”类型的参数列表调用“解码”

    我正在尝试创建一个函数 该函数根据传递给它的自定义 JSON 模型接受 Codable 类型的参数 错误 Cannot invoke decode with an argument list of type T from Data 发生在解
  • 如何知道 ListView 中的哪个 LinkBut​​ton 被单击

    我目前在 ListView 的 ItemTemplate 中有一个 LinkBut ton ListView 中的每个按钮都应调用相同的单击事件处理程序 但是 在处理程序中我需要知道单击了哪个按钮 这可能吗
  • 如何通过mssql存储过程读取远程(网络)机器中xml文件的内容

    我尝试使用批量插入读取本地计算机中单个 xml 文件的内容 SELECT FROM OPENROWSET BULK FILENAME SINGLE CLOB AS xmlData 它正在工作 但我正在尝试从远程机器读取数据 它给出以下错误
  • 在 Service Worker 更新时重新加载 Create-react-app

    我要修改create react app服务人员file并实现弹出消息 如果新的 Service Worker 已准备好激活 该消息将要求用户更新应用程序 我几乎完成了解决方案 但有一个陷阱 我想在用户确认服务工作人员更新弹出窗口时重新加载
  • 重新索引并填充 PySpark 中缺失的日期

    有没有办法填充 PySpark 中缺少的列日期和行值 目前 我将数据帧转换为 Pandas 并在那里重新索引 sdf show id 2018 01 01 2018 01 03 2018 01 05 1 0 0 1 0 0 0 2 4 0