我尝试在多个条件下比较数据帧的行,并使用以下代码删除条件为真的行:
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
一个示例数据集会使它变得更容易。然而,根据你的叙述,让我们尝试一下
df[~((df['C'].isna())&(df['A'].eq(df['A'].shift(-1)))&(df['B'].eq(df['B'].shift(-1))))]
相关问题 更多 >
编程相关推荐