gpt4 book ai didi

python - 检测 Pandas 数据框中的第一个变化

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:22 25 4
gpt4 key购买 nike

我面临的问题是我有一个每天保存变量 V1 状态的 Pandas 数据框。我只对变量何时更改其状态以及新状态是什么的信息感兴趣。

test_dataframe = pd.DataFrame()
test_dataframe['V1'] = ['X','Y','X','X','Y','X','Y','X']
test_dataframe['Status'] = ['A','C','B','B','D','B','D','A']
test_dataframe['Date'] = [pd.to_datetime('2017-1-1'),pd.to_datetime('2017-1-2'),pd.to_datetime('2017-1-3'),pd.to_datetime('2017-1-4'),pd.to_datetime('2017-1-5'),pd.to_datetime('2017-1-6'),pd.to_datetime('2017-1-7'),pd.to_datetime('2017-1-8')]
print(test_dataframe)

导致以下数据框

  V1 Status       Date
0 X A 2017-01-01
1 Y C 2017-01-02
2 X B 2017-01-03
3 X B 2017-01-04
4 Y D 2017-01-05
5 X B 2017-01-06
6 Y D 2017-01-07
7 X A 2017-01-08

我感兴趣的是:变量什么时候改变状态,新的状态是什么?

结果应该是:

V1 Status Date
-----------------
X A date_1
X B date_3
X A date_8
Y C date_2
Y D date_5

有人可以帮忙吗?谢谢

最佳答案

您可以使用 groupby + apply -

df = df.groupby('V1', group_keys=False)\
.apply(lambda x: x[x.Status.ne(x.Status.shift())])\
.reset_index(drop=True)

df

V1 Status Date
0 X A 2017-01-01
1 X B 2017-01-03
2 X A 2017-01-08
3 Y C 2017-01-02
4 Y D 2017-01-05

x.Status.ne(x.Status.shift()) 位将查找 Status 发生变化的行。

关于python - 检测 Pandas 数据框中的第一个变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808268/

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