【问题标题】:How to assign a postfix for column values based on ID_number如何根据 ID_number 为列值分配后缀
【发布时间】:2021-12-11 19:42:34
【问题描述】:

DataFrame -> 包含 3 列的简单事件日志。

我想根据#applicationnumber 对我的DataFrame 进行分组(添加post_fix f.ex _step_1、_step_2 等)。请参阅下面的示例。能否请您分别帮我解决这个问题?

data_example = {'applicationnumber': ['XYZ104183736AA', 'XYZ104183736AA', 'XDASDHGHG54G', 'XDASDHGHG54G','XDASDHGHG54G'], 'event_name': ['verification', 'verification', 'verification', 'verification','verification'],'working_time_in_seconds': [1000,2000,30000,10000,1004]}
df_example = pd.DataFrame(data_example)

提前非常感谢!

【问题讨论】:

  • 能否添加一个数据样本,方便重现?

标签: python pandas group-by data-science jupyter


【解决方案1】:

您可以使用groupby.cumcount() 将这些列组合在一起并将它们视为字符串:

df['event_name'] = df['event_name'].astype(str)\
                   + "_step_" \
                   + df.groupby('applicationnumber').cumcount().add(1).astype(str)

打印:

  applicationnumber           event_name  working_time_in_seconds
0          XYZ104AA  verification_step_1                    54365
1          XYZ104AA  verification_step_2                    35453
2            XDA54G  verification_step_1                      342
3            XDA54G  verification_step_2                       52
4            XDA54G  verification_step_3                      123

我用过这个示例DF

>>> df.to_dict()

{'applicationnumber': {0: 'XYZ104AA',
  1: 'XYZ104AA',
  2: 'XDA54G',
  3: 'XDA54G',
  4: 'XDA54G'},
 'event_name': {0: 'verification',
  1: 'verification',
  2: 'verification',
  3: 'verification',
  4: 'verification'},
 'working_time_in_seconds': {0: 54365, 1: 35453, 2: 342, 3: 52, 4: 123}}

更新:

import numpy as np

df['event_name'] = np.where(
    df.event_name.str.contains('_step_'),df.event_name,\
        df['event_name'].astype(str)\
            + "_step_" \
                 + df.groupby('applicationnumber').cumcount().add(1).astype(str)
        )

【讨论】:

  • 当我多次运行单元格时,你知道如何避免“额外添加”后缀吗,例如,它看起来像 verificatio_ step_1_step_1_step_1 :) ? @sophocles
  • 一个简单的解决方法是检查“step”是否已包含在列中。请查看更新。
猜你喜欢
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 2021-09-07
  • 2020-05-23
  • 2017-11-05
  • 2019-11-22
  • 1970-01-01
相关资源
最近更新 更多