对于粗略的标题,我深表歉意,但我有以下情况:
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 的列都将是"坏"