python - 满足条件时重新格式化数据框/添加行
问题描述
我希望在满足条件时添加数据框行并编辑列。我希望 B 列只有“1”。如果该值大于 1,则添加等于 > 1 的数字的行长度,同时保持 ColA 按日期升序排序。下面的例子:
原DF:
ColA ColB
2021-03-09 1
2021-03-09 3
2021-03-10 2
2021-03-10 1
2021-03-10 2
2021-03-11 2
所需的DF
ColA ColB
2021-03-09 1
2021-03-09 1
2021-03-09 1
2021-03-09 1
2021-03-10 1
2021-03-10 1
2021-03-10 1
2021-03-10 1
2021-03-10 1
2021-03-11 1
2021-03-11 1
任何建议都非常感谢!
解决方案
假设您只有正整数,'ColB'
您可以使用np.repeat
. 重复处理重复,因此我们可以分配 ColB = 1。
import pandas as pd
import numpy as np
df = (pd.DataFrame(np.repeat(df.ColA, df.ColB))
.assign(ColB=1))
或者,如果你有一个非重复的索引,你可以重复它并使用它loc
来获取 repitition。当您有多个要重复的列时很有用:
df = (df.loc[df.index.repeat(df.ColB)]
.assign(ColB=1))
ColA ColB
0 2021-03-09 1
1 2021-03-09 1
1 2021-03-09 1
1 2021-03-09 1
2 2021-03-10 1
2 2021-03-10 1
3 2021-03-10 1
4 2021-03-10 1
4 2021-03-10 1
5 2021-03-11 1
5 2021-03-11 1
推荐阅读
- javascript - 在 NodeJS 中输入空字符串
- c# - Blazor.Server 和 Asp.Net Web API 有什么区别?
- docker - 使用 ocelot 和 docker 服务使用路由 ApiGateway 时出错
- amazon-dynamodb-local - 使用 AWS Workbench 从本地容器中删除 dynamodb 表
- r - 是否有重复创建对象的 R 函数?
- python - 将列表和多个字典组合到嵌套字典 - python
- css - 如何将本地字体导入 Gatsby 网站?
- javascript - JS:嵌套承诺链还是将它们保持在同一范围内?
- sql-server - 使用 sql-spark-connector (Apache) 从 Hadoop 导出数据
- twig - 如何在表达式中引用 Twig 表达式