我正在寻找一种方法来确定pandas数据框的一个列或一组列是否唯一地标识该数据框的行。我已经在Stata中看到了这个称为isid函数的函数。
我能想到的最好的方法是使用集合理解来获取列的子集的唯一值,并断言集合中的值与数据帧中的行一样多:
subset = df[["colA", "colC"...]]
unique_vals = {tuple(x) for x in subset.values}
assert(len(unique_vals) == len(df))
Run Code Online (Sandbox Code Playgroud)
这不是世界上最优雅的答案,所以我想知道是否有内置函数可以执行此操作,或者是否可以测试列的子集是否为唯一值索引。
您可以建立索引并检查其is_unique属性:
import pandas as pd
df1 = pd.DataFrame([(1,2),(1,2)], columns=list('AB'))
df2 = pd.DataFrame([(1,2),(1,3)], columns=list('AB'))
print(df1.set_index(['A','B']).index.is_unique)
# False
print(df2.set_index(['A','B']).index.is_unique)
# True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
806 次 |
| 最近记录: |