Python 使用唯一值精确定位两列之间的差异



对于粗略的标题,我深表歉意,但我有以下情况:

2 个数据帧列,其值:

球 | 1

球 | 1

棒 | 2

棒 | 3

基本上,我如何能够运行某种验证检查来说,Ball 很好,因为它在第 1 列中有 2 个唯一值,但 stick 是错误的,因为它有 2 和 3 不一样?我希望第 1 列中的每个唯一值只有 1 个唯一值。

.groupby().nunique()一起使用:

df.groupby('column_1_name')['column_2_name'].nunique()

您可以读取没有列名的CSV文件,并且可以获取如下值

df = pd.read_csv('data.csv',header=None)
print(df.groupby(0)[1].nunique()==1)

结果:

Ball      True
Stick    False
df.duplicated(subset='Ball')

这将返回一系列布尔值,指示这些值是否与前一行重复

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.duplicated.html

   Ball Stick
0   1   2
1   1   3

返回

0    False
1     True
dtype: bool

已编辑

所以我想我知道OP的去向

如果我使用 df 设置:

df = pd.DataFrame([['1','2'],['1','2'],['1','8']], columns=['Ball','Stick'])

DF退货

   Ball Stick
0   1   2
1   1   2
2   1   8

然后:

for row in df:
    print(row)
    print(df.duplicated(subset=row, keep=False))

返回:

Ball
0    True
1    True
2    True
dtype: bool
Stick
0     True
1     True
2    False
dtype: bool

因此,任何带有 False 的列都将是"坏"

最新更新