我有这样的{
"type":"record",
"name":"asb",
"namespace":"Employee",
Fields[{
"name":"PurchaseId",
"type":"numeric",
"ClientFieldNm":null,
"ImportFieldLenQty":0,
"ImportRetainFlag":false,
"ImportPrimaryKeyFlag":0,
"ImportResolveFKFieldFlag":0,
"ImportDeblankDataFlag":false,
"ImportEncryptFlag":false,
"ImportBatIndexFlag":false,
"ImportEnforceValidTypeFlag":false
,"ImportRequiredFlag":false
}]}
:
dataframe
如何找到属于每个点1,2,3的最小值,并且应该没有冲突,这意味着点1和2不应属于相同的点0.3。
答案 0 :(得分:0)
您可以使用groupby
和max
功能。
df.groupby('A').B.max()
答案 1 :(得分:0)
如果我的理解正确,您想做两件事:
-为每个B
找到最小的A
,并
-确保它们不会发生碰撞。您没有指定发生碰撞时的处理方式,因此我假设您只是想知道是否存在碰撞。
第一个可以通过Rarblack的答案来实现(尽管您应该使用min
而不是max
)。
第二,您可以使用.nunique()
方法-查看有多少个唯一的B
值(应该与唯一的A
值的数量相同)
#setup dataframe
df = pd.DataFrame.from_dict({
'A': [1,1,1,2,2,2,3,3,3],
'B': [0.1,0.2,0.3,0.2,0.5,0.3,0.8,0.6,0.1]
})
# find minimum
x = df.groupby('A')['B'].min()
# assert that there are no collisions:
if not (x.nunique() == len(x)):
print ("Conflicting values")