【问题标题】:incremental value for a column in pythonpython中列的增量值
【发布时间】:2020-06-26 15:12:27
【问题描述】:

我有一个专栏'value'numerical values。我写了一个条件来创建一个列'status',如果值less than '5',则返回'G',否则'NG'。但我希望输出类似于'expected output'。如果条件连续满足,则应为incremented。我已经编写了以下代码,但我无法对其进行最终调整。

h_count = 0
current = "G"

status = []

for i in range (len(df_2)):
    if df_2.iloc[i, 13] == 'NG':
        status.append("NG")
    elif  df_2.iloc[i, 13] == 'G':
        h_count += 0
        status.append(f"G{h_count}")
        if df_2.iloc[i+1, 13] == df_2.iloc[i, 13]:
            status.append(f"G{h_count}")

这里的'13'column index。我该怎么做?

raw_df = pd.DataFrame(
    {
        "value": [5, 5, 5,5,10,12,3,2,4,5,12,15,5,13,2],
        "Status": ['G','G','G','G','NG','NG','G','G','G','G','NG','NG','G','NG','G'],
        "Expected_Status": ['G0','G0','G0','G0','NG','NG','G1','G1','G1','G1','NG','NG','G2','NG','G3'],
    }
)

【问题讨论】:

  • 您能否将输入和预期输出(as text)添加到您的问题中?这样,您就可以轻松重现您的问题。

标签: python loops dataframe


【解决方案1】:

2 个问题:

  1. 你没有增加 h_count。使用h_count += 1 并在写入第一个输出以递增并以“G0”开头后移动它。

  2. 在 elif 语句中,如果当前 iloc 值为“G”并且下一个 iloc 不是 G,则可以简单地增加 h_count。您还必须检查当前迭代是否更大比长度为 1,以避免访问不存在的行(因此是 if i < len(df_2)-1)。

使用您的代码修复此问题并重新格式化以使用您的示例数据:

df_2 = pd.DataFrame(
    {
        "value": [5, 5, 5, 5,10,12,3,2,4,5,12,15,5,13,2],
        "Status": ['G','G','G','G','NG','NG','G','G','G','G','NG','NG','G','NG','G'],
        "Expected_Status": ['G0','G0','G0','G0','NG','NG','G1','G1','G1','G1','NG','NG','G2','NG','G3'],
    }
)
h_count = 0
current = "G"

status = []

for i in range(len(df_2)):
    if df_2.iloc[i, 1] == 'NG':
        status.append("NG")
    elif  df_2.iloc[i, 1] == 'G':
        status.append(f"G{h_count}")
        if i < len(df_2)-1 and df_2.iloc[i+1, 1] != df_2.iloc[i, 1]: 
            h_count += 1

希望这会有所帮助。

【讨论】:

  • 非常感谢 :) 这绝对有帮助
猜你喜欢
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
相关资源
最近更新 更多