我想比较数据框的多列并找到值不同的行。在示例中,我只有三列,但我希望能够重用此过程,而不管列数或列名称如何。
创建数据框的代码:
dict = {'column_name': {0: 'a_desc',
1: 'a_code',
2: 'b_desc',
3: 'b_code',
4: 'fiscal_year'},
'20190508-131122': {0: 250.0, 1: 50.0, 2: 100.0, 3: 250.0, 4: 20.0},
'20190508-151756': {0: 250.0, 1: 51.0, 2: 100.0, 3: 250.0, 4: 20.0},
'20190509-074713': {0: 250.0, 1: 50.0, 2: 100.0, 3: 250.0, 4: 20.0}}
df = pd.DataFrame(dict)
df = df.set_index('column_name')
数据框
column_name 20190508-131122 20190508-151756 20190509-074713
a_desc 250.0 250.0 250.0
a_code 50.0 51.0 50.0
b_desc 100.0 100.0 100.0
b_code 250.0 250.0 250.0
fiscal_year 20.0 20.0 20.0
这是我的最新尝试,但它不起作用(没有匹配项):
matched = ~df.all(axis=1)
df.loc[matched]
我的期望是它会打印行 'a_code' 的内容,因为其中一列的值与其他列不同。
我知道有很多关于比较多列的问题,但我找不到这种情况或可以重新用于这种情况的代码。
IIUCnunique
将返回每行的唯一编号,在您的情况下,您需要选择大于 1 的数字,因此每行至少有一个与其他值不同的值
df[df.nunique(1).ne(1)]
Out[331]:
20190508-131122 20190508-151756 20190509-074713
column_name
a_code 50.0 51.0 50.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句