Description

  • 我有一个文件,其中包括原始数据和更新的报表.
  • original_id行就像一个公钥.
  • change_repair_id中没有值的条目是初始数据条目.
  • 具有change_请求_id值的收件箱是对初始数据项的更新.
  • 行change_请求_id引用行original_id并表示数据更改(更新).只有需要更改的值才表示为值,如果字段为空,则意味着值不会更改.

Original File

change_request_id original_id a b c d
1 10 20 30 40
2 2500 600 700 800
1 3 12
2 4 700 800
1 5 30
6 16 17 19 20

Desired Output:

change_request_id original_id a b c d
1 12 30 30 40
2 500 700 800 800
6 16 17 19 20

推荐答案

original_id不为空(用fillna)时,您可以用change_request_id替换original_id,然后用groupby.last获取每个组的最新值:

out = (df.assign(original_id=df['change_request_id'].fillna(df['original_id']))
         .groupby('original_id', as_index=False).last()
         .drop(columns='change_request_id')
      )

输出:

   original_id      a      b      c       d
0          1.0    12.0   30.0   30.0   40.0
1          2.0  2500.0  700.0  800.0  800.0
2          6.0    16.0   17.0   19.0   20.0

Python相关问答推荐

Pandas或pyspark跨越列创建

从流程获取定期更新

如何最好地处理严重级联的json

如何在矩阵上并行化简单循环?

具有2D功能的Python十六进制图

当值是一个integer时,在Python中使用JMESPath来验证字典中的值(例如:1)

如何使用scipy从频谱图中回归多个高斯峰?

@Property方法上的inspect.getmembers出现意外行为,引发异常

使用新的类型语法正确注释ParamSecdecorator (3.12)

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

如何避免Chained when/then分配中的Mypy不兼容类型警告?

使用索引列表列表对列进行切片并获取行方向的向量长度

如何从.cgi网站刮一张表到rame?

如何在UserSerializer中添加显式字段?

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

不允许访问非IPM文件夹

无法连接到Keycloat服务器

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

如何在TensorFlow中分类多个类

Flask Jinja2如果语句总是计算为false&