在多种条件下比较 pandas 数据帧中的行时"ValueError: Index data must be 1-dimensional"



我试图在多种条件下比较数据帧的行,并用以下代码删除条件为真的行:

df_new = df_old.drop(np.where(((df_old['A'] == df_old['A'].shift(-1)) & (df_old['B'] == df_old['B'].shift(-1)) & (df_old['C'].isna()))))

如果当前行AB列中的值与前一行A列中的值为nan,则我想删除当前行。但是代码不起作用,我得到以下错误:

"ValueError:索引数据必须是一维的";

数据帧如下所示:

Index      A         B          timestamp            number
0          a600      JH123aas   2020-10-20 13:27:38  35686
1          a600      JH123aas   2020-10-20 13:27:40  nan
2          a350      AV129nas   2020-10-20 13:28:50  nan
3          a158      KU954bas   2020-10-20 13:37:12  nan
4          a158      KU954bas   2020-10-20 13:37:18  15489

任何关于如何更正我的代码或如何防止错误的建议都将不胜感激。

编辑:我刚刚意识到,我不仅想将当前行与前一行进行比较,还想将其与下一行进行对比。所以数据帧最终应该是这样的:

Index      A         B          timestamp            number
0          a600      JH123aas   2020-10-20 13:27:38  35686
2          a350      AV129nas   2020-10-20 13:28:50  nan
4          a158      KU954bas   2020-10-20 13:37:18  15489

一个示例数据集会让它变得更容易。然而,根据你的叙述,让我们试试;df[~((df['C'].isna())&(df['A'].eq(df['A'].shift(-1)))&(df['B'].eq(df['B'].shift(-1))))]

相关内容

最新更新