在多个条件下比较数据帧中的行时,“ValueError:索引数据必须是1dimensional”

2024-10-03 13:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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()))))

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

"ValueError: Index data must be 1-dimensional"

数据帧如下所示:

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

Tags: 数据代码numberdfindexshift错误nan
1条回答
网友
1楼 · 发布于 2024-10-03 13:23:25

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

相关问题 更多 >