查找哪一列具有可帮助区分具有 Pandas 的行的唯一值

Find which column has unique values that can help distinguish the rows with Pandas

我有以下数据框,其中包含 2 行:

index  name      food   color   number   year   hobby  music
0      Lorenzo   pasta  blue     5        1995  art    jazz
1      Lorenzo   pasta  blue     3        1995  art    jazz

我想写一个代码来告诉我哪一列可以区分这两行。
例如,在此数据框中,“数字”列是区分两行的列。

直到现在,我已经非常简单地完成了这项工作,只需使用 iloc 逐列查看值即可。

duplicates.iloc[:,3]
>>>
0  blue
1  blue

重要的是要考虑到:

  1. 这应该是 for 循环,每次我在新生成的数据帧上检查它。
  2. 我需要检查的行可能不超过 2 行
  3. 可以区分行的列可能不止 1 个。

我认为检查此类事情的方法类似于每次取一列,获取唯一值并检查它们是否彼此相等,类似于此:

for n in np.arange(0,len(df.columns)):
    tmp=df.iloc[:,n]

然后我想比较时间数据帧上的所有值是否彼此相似,但在这里我卡住了,因为有时我有很多行而且我也需要。

我的最终目标:能够在for循环内部检查以识别在temporaldtaframe的每一行中具有不同值的列,从而有助于区分行。

您可以 apply 在所有列上使用 duplicated 方法:

s = df.apply(pd.Series.duplicated).any()

s[~s].index

输出:['number']