繁体   English   中英

确定熊猫数据框中的列值何时发生变化

[英]Determining when a column value changes in pandas dataframe

我正在寻找编写一个快速脚本,该脚本将运行包含两列的 csv 文件,并为我提供 B 列中的值从一个值切换到另一个值的行:

例如:

数据框:

# |  A  |  B  
--+-----+-----
1 |  2  |  3
2 |  3  |  3
3 |  4  |  4
4 |  5  |  4
5 |  5  |  4

会告诉我变化发生在第 2 行和第 3 行之间。我知道如何使用 for 循环获取这些值,但我希望有一种更 Pythonic 的方法来解决这个问题。

您可以为差异创建一个新列

> df['C'] = df['B'].diff()
> print df
   #  A  B   C
0  1  2  3 NaN
1  2  3  3   0
2  3  4  4   1
3  4  5  4   0
4  5  5  4   0

> df_filtered = df[df['C'] != 0]
> print df_filtered
   #  A  B  C
2  3  4  4  1

这将是您所需的行

您可以执行以下操作,这也适用于非数值:

>>> import pandas as pd
>>> df = pd.DataFrame({"Status": ["A","A","B","B","C","C","C"]})
>>> df["isStatusChanged"] = df["Status"].shift(1, fill_value=df["Status"].head(1)) != df["Status"]
>>> df
  Status  isStatusChanged
0      A            False
1      A            False
2      B             True
3      B            False
4      C             True
5      C            False
6      C            False
>>> 

请注意, fill_value可能因您的应用程序而异。

你可以使用它更快,希望它有帮助!!

my_column_changes = df["MyStringColumn"].shift() != df["MyStringColumn"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM