如何比较数据帧熊猫中的列?

时间:2017-05-22 12:00:48

标签: python pandas

我有两个不同尺寸的数据框(即):

df1
      A    B     
0     1    10
1     2    11
2     3    12
3     4    13
4     5    14

df2
      A    B     C
0     1    10    10
1     3    12    12
2     4    13    13

我知道如何检索两个数据框中存在的元素:

dfnew = df1.loc[df1.set_index(list(df1.columns)).index.isin(df2.set_index(list(df2.columns)).index)]

另一方面,我想要的,只检索两个数据帧中存在的列的名称,并将它们存储在变量中,例如:

a= [ A, B, C]

2 个答案:

答案 0 :(得分:1)

#use set on df columns to get the intersections:
list(set(df1.columns).union(set(df2.columns)))

答案 1 :(得分:1)

如果只需要列名称的联合,我认为你需要union

df1.columns.union(df2.columns).tolist()

样品:

df1 = pd.DataFrame(columns=['A', 'B'])
df2 = pd.DataFrame(columns=['A', 'B', 'C'])

L = df1.columns.union(df2.columns).tolist()
print (L)
['A', 'B', 'C']

使用numpy.union1d加快解决方案:

L = np.union1d(df1.columns, df2.columns).tolist()
print (L)
['A', 'B', 'C']