【发布时间】:2017-04-28 10:03:50
【问题描述】:
我知道关于使用np.where.的链式逻辑运算符的话题有很多问题
我有 2 个数据框:
df1
A B C D E F Postset
0 1 2 3 4 5 6 yes
1 1 2 3 4 5 6 no
2 1 2 3 4 5 6 yes
df2
A B C D E F Preset
0 1 2 3 4 5 6 yes
1 1 2 3 4 5 6 yes
2 1 2 3 4 5 6 yes
我想比较每个数据帧中行的唯一性。为此,我需要检查许多选定列的所有值是否相等。
从这个question:如果我正在检查列abcdef我可以这样做:
np.where((df1.A != df2.A) | (df1.B != df2.B) | (df1.C != df2.C) | (df1.D != df2.D) | (df1.E != df2.E) | (df1.F != df2.F))
正确给出:
(array([], dtype=int64),)
即所有列中的值对于两个数据帧都是独立相等的。
这对于小型数据框来说很好,但我的真实数据框有很多列,我必须检查。 np.where 条件太长,无法准确写出。
相反,我想将我的列放入一个列表中:
columns_check_list = ['A','B','C','D','E','F']
并使用我的np.where 语句自动检查所有列。
这显然不起作用,但它是我正在寻找的表单类型。比如:
check = np.where([df[column) != df[column] | for column in columns_check_list])
我怎样才能做到这一点?
注意事项:
- 我有很多专栏
- 我的数据格式是固定的。
- 列中的值可能包含
strings或floats。
【问题讨论】:
标签: python pandas numpy dataframe