首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pandas中生成新列-有条件地增加整数计数

在pandas中生成新列-有条件地增加整数计数
EN

Stack Overflow用户
提问于 2020-04-29 03:54:52
回答 1查看 295关注 0票数 1

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

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

所有时候,当值改变时,它应该是"Step_(new_number)“。因此,第一个零值应该是Step_1,然后是Step_2,然后其他带有数字的行应该是Step_3,依此类推。

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

代码语言:javascript
运行
复制
def f(row):
    if row['A'] > 0 :
        val = "Step_1"
    else:
        val = "Step_0"
    return val
df['B'] = df.apply(f, axis=1)

但是我不明白,如何有条件地增加新列B中的值的计数。请注意,Step_1可以用"1“替换-它不需要是文本,以使解决方案更容易。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 04:28:49

一种选择是创建一些全局变量来跟踪值和步骤,并引用/更新与pandas.Series.apply一起使用的函数中的那些变量,如下所示:

代码语言:javascript
运行
复制
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)

输出:

代码语言:javascript
运行
复制
        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

Example code in python tutor

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61488860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档