Pandas 比较两个数据框并查找重复元素
Pandas Compare two data frames and look for duplicate elements
我想比较 df 和 df_equal。
df 包含几个单独的数据框
import pandas as pd
df1 = pd.DataFrame([[ 'b', 'b', 'b' ]],
columns=['a', 'b', 'c'])
Output:
a b c
0 b b b
df2 = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
Output:
a b c
0 x x x
df = pd.concat([df1, df2])
a b c
0 b b b
0 x x x
df_equal = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
如何检查 df 是否重复?
我试过.equals:
for row in df:
df.equals(exactly_equal)
我想要的输出:
False #first row in df
True #second row in df
您可以遍历行,例如将 df
的每一行与 df2
进行比较(假设 df2
只有一行):
for row in range(len(df)):
print((df.iloc[row, ].values == df2.values).all())
False
True
我不明白你说的比较重复是什么意思,很含糊。
您是指将行或列中的重复项或值与数据中的值进行比较吗?
但是,我们可以通过以下方式比较两行中的值:
df.values[0]==df.values[1]
# [False False False]
或者我们通过以下方式将索引为 [1] 的第 2 行与整个数据集进行比较:
df.values[:][1]==df.values[:][:]
#[[False False False]
#[ True True True]]
我想这就是你想要的。如果我没有完全得到你的答案,我很抱歉。
试着让我知道!
import pandas as pd
df1 = pd.DataFrame([[ 'b', 'b', 'b' ]],
columns=['a', 'b', 'c'])
df2 = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
df = pd.concat([df1, df2])
df_equal = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
for i in range(0,len(df)):
print((df.iloc[i].equals(df_equal.iloc[0])))
会完成任务
我想比较 df 和 df_equal。 df 包含几个单独的数据框
import pandas as pd
df1 = pd.DataFrame([[ 'b', 'b', 'b' ]],
columns=['a', 'b', 'c'])
Output:
a b c
0 b b b
df2 = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
Output:
a b c
0 x x x
df = pd.concat([df1, df2])
a b c
0 b b b
0 x x x
df_equal = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
如何检查 df 是否重复?
我试过.equals:
for row in df:
df.equals(exactly_equal)
我想要的输出:
False #first row in df
True #second row in df
您可以遍历行,例如将 df
的每一行与 df2
进行比较(假设 df2
只有一行):
for row in range(len(df)):
print((df.iloc[row, ].values == df2.values).all())
False
True
我不明白你说的比较重复是什么意思,很含糊。 您是指将行或列中的重复项或值与数据中的值进行比较吗?
但是,我们可以通过以下方式比较两行中的值:
df.values[0]==df.values[1]
# [False False False]
或者我们通过以下方式将索引为 [1] 的第 2 行与整个数据集进行比较:
df.values[:][1]==df.values[:][:]
#[[False False False]
#[ True True True]]
我想这就是你想要的。如果我没有完全得到你的答案,我很抱歉。 试着让我知道!
import pandas as pd
df1 = pd.DataFrame([[ 'b', 'b', 'b' ]],
columns=['a', 'b', 'c'])
df2 = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
df = pd.concat([df1, df2])
df_equal = pd.DataFrame([[ 'x', 'x', 'x' ]],
columns=['a', 'b', 'c'])
for i in range(0,len(df)):
print((df.iloc[i].equals(df_equal.iloc[0])))
会完成任务