gpt4 book ai didi

python - 创建一个 Pandas/NumPy 函数来查找系列中的值何时发生变化?

转载 作者:行者123 更新时间:2023-12-01 00:25:40 24 4
gpt4 key购买 nike

在 DataFrame 中,我有一个名为“状态”的列,它描述了各种事件发生的位置,因此许多行被重复,然后更改为另一个状态:

States
- California
- California
- California
- California
- California
- New Mexico
- New Mexico
- New Mexico
- Hawaii
- California

我正在尝试运行一个 pandas 函数,该函数将为每个状态分配一个变量,但每次状态更改时它都是唯一的。因此,即使状态重复,它们也不会获得与上次在列表中时相同的值。从上面的例子中,我会得到:

new_column
- 1
- 1
- 1
- 1
- 1
- 2
- 2
- 2
- 3
- 4 #even though this is 'California', it's a new,unique value

我目前已经尝试过

def new_id(stateVal):
x = Kentucky #first state in the list that I'm comparing to
y = 1 #the unique value
if stateVal == x:
return y
elif stateVal != x:
x == w
y++
return y
else:
return 0

当我将它应用到数据集中的 STATE 列时,它还没有正常工作。 Pandas 或 NumPy 中是否有预定义函数可以帮助解决此问题?

最佳答案

你可以这样做,将每个元素与下一个元素进行比较:

count=1
for i,row in enumerate(df['state'] == df['state'].shift(-1)):
if row:
df.at[i,'new_column'] = count
else:
df.at[i,'new_column'] = count
count+=1

df['new_column'] = df['new_column'].astype(int) #convert to int if necessary

可能有一种更干净的方法来避免循环,但我认为原则上这就是您正在寻找的

编辑一行,给出相同的输出:

df['new_column'] = df['state'].ne(df['state'].shift()).cumsum()

关于python - 创建一个 Pandas/NumPy 函数来查找系列中的值何时发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com