我很熟悉如何根据以下条件删除数据框内的行:
df1 = df1.drop(df1[<some boolean condition>].index)
让df1和df2大小相等。问题是要删除df2中满足上述df1条件的相同索引行。我正在寻找一种优雅的解决方案,而不是保留索引,然后针对df2再次对其进行遍历。
示例:
df1
index value
1 4
2 5
3 6
4 3
1 1
2 5
1 3
2 3
3 2
4 2
5 1
6 7
7 12
df2
index value
1 4
2 5
3 7
4 3
1 1
2 109
1 44
2 3
3 2
4 2
5 1
6 7
7 12
索引不是连续的,因此简单的df.drop将不起作用。它基于之前创建的组。
答案 0 :(得分:0)
首先,您应该在数据框中修复索引。除非索引是连续的,否则您要执行的操作将不起作用,因为您将通过按索引删除来删除多行。您应该尝试避免使用many to many relationships in data analytics - they simply cause more problems then they solve)。
尝试这样的事情:
df1.reset_index()
df2.reset_index()
for indexes, row in df1.iterrows():
if df1.columnname = 2: #imaginary value, place Boolean condition here
df1.drop(df1.index[[indexes]])
df2.drop(df2.index[[indexes]])