Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在pandas中生成新列-有条件地增加整数计数_Python 3.x_Pandas_Conditional Statements_Calculated Columns - Fatal编程技术网

Python 3.x 在pandas中生成新列-有条件地增加整数计数

Python 3.x 在pandas中生成新列-有条件地增加整数计数,python-3.x,pandas,conditional-statements,calculated-columns,Python 3.x,Pandas,Conditional Statements,Calculated Columns,我想要一个熊猫数据框,如下所示: 列A-根据这些值,我想生成一个新变量-列B 始终,当值发生变化时,应进行“步骤(新编号)”。因此,第一个零值是步骤1,然后下一个值应该是步骤2,然后其他带数字的行应该是步骤3,依此类推 这就是我到目前为止所做的: def f(row): if row['A'] > 0 : val = "Step_1" else: val = "Step_0" return val df['B'] = df.appl

我想要一个熊猫数据框,如下所示:

列A-根据这些值,我想生成一个新变量-列B

始终,当值发生变化时,应进行“步骤(新编号)”。因此,第一个零值是步骤1,然后下一个值应该是步骤2,然后其他带数字的行应该是步骤3,依此类推

这就是我到目前为止所做的:

def f(row):
    if row['A'] > 0 :
        val = "Step_1"
    else:
        val = "Step_0"
    return val
df['B'] = df.apply(f, axis=1)
但我不明白,如何有条件地增加新列B中的值的计数。
请注意,步骤1可以替换为“1”-为了使解决方案更简单,它不需要是文本。

一个选项是创建一些全局变量来跟踪值和步骤,并引用/更新与
pandas.Series一起使用的函数中的值和步骤。请这样应用

import pandas as pd

df = pd.DataFrame(dict(
    A = [0,0,0,44.67,44.67,0,0,35.49,35.49,35.49,0]
))

step = 0
value = None

def get_step(x):
    global step
    global value
    if x != value:
        value = x
        step += 1
    return f'Step_{step}'

df['B'] = df['A'].apply(get_step)
print(df)

输出:

        A       B
0    0.00  Step_1
1    0.00  Step_1
2    0.00  Step_1
3   44.67  Step_2
4   44.67  Step_2
5    0.00  Step_3
6    0.00  Step_3
7   35.49  Step_4
8   35.49  Step_4
9   35.49  Step_4
10   0.00  Step_5


你好,Phillyclause89,非常感谢。这是一个简化的例子。真正的CSV文件由4000行组成,行数始终不同。请给我一个例子,如何从csv文件加载A列而不是列出值?您需要阅读/google关于如何使用的内容,这将为您提供所有csv数据的
pandas.DataFrame
。一旦你有了
df
,你就应该能够使用我在回答中的逻辑,无论你想要什么列。在没有实际访问文件的情况下,很难给出加载csv文件的具体代码示例。