python Pandas : reduce dataframe to contain with duplicate states

标签 python pandas dataframe

这是我在这里提出的第一个问题,我找不到解决问题的简单方法。

我想减少包含状态变化的数据框。 与“.drop_duplicates()”类似,我想减少具有重复状态的数据帧,但它应该只在状态没有改变时删除该行。

这是我的示例数据框:

df = pd.DataFrame(data=({'Date':('Day1', 'Day2', 'Day3', 'Day4', 'Day5'),
                         'State':(1,0,0,2,0)}),
                  columns=(['State']), index=(['Date']))

df_reduced = df.drop_duplicates
df_reduced

不幸的是,结果不是想要的结果:

Out[]: 
             State
Date         
Day1             1
Day2             0
Day4             2

所需的输出还将包含状态为 0 的第 5 天。

我尝试使用“for and iterrows()”构造,但在处理较长时间序列数据时速度非常慢。

希望您能找到一种更优雅的方式,它可以快速处理更长的时间序列数据。

提前感谢您的帮助!

最佳答案

一种方法是将您的系列与移动一个值的系列进行比较:

df = pd.DataFrame(data={'Date':('Day1', 'Day2', 'Day3', 'Day4', 'Day5'),
                        'State':(1,0,0,2,0)})

df = df.set_index('Date')

res = df.loc[df['State'] != df['State'].shift()]

print(res)

#       State
# Date       
# Day1      1
# Day2      0
# Day4      2
# Day5      0

关于 python Pandas : reduce dataframe to contain with duplicate states,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775476/

相关文章:

python - Python中的字典小写

python - Twisted Reactor 在一个程序中多次启动?

python - Pandas:复制 df 并填充新值的最佳方式

python - 用一些匹配和不匹配的列和索引减去数据框

python - 如何在python中的自变量中循环和存储值

python - matplotlib - 在 y 轴上为每组创建 x 轴上的条形图

python - 在 Pandas 中拆分和转换字符串列

python - 如何从嵌套字典创建扩展的 Pandas 数据框?

python - from_records() 的 nrows 参数在 pandas 中有什么作用?

r - 在数据框创建的循环中,使用 data.table 包中的 set() 将值从一个数据框复制并粘贴到另一个数据框