gpt4 book ai didi

python - 在合并函数 Pandas 中验证

转载 作者:行者123 更新时间:2023-12-04 18:20:01 27 4
gpt4 key购买 nike

今天我试图更深入地了解 merge() pandas 的功能,我找到了选项 validate ,如文档中所述,可以是:

validate : string, default None

If specified, checks if merge is of specified type.

“one_to_one” or “1:1”: check if merge keys are unique in both left andright datasets. “one_to_many” or “1:m”: check if merge keys are uniquein left dataset. “many_to_one” or “m:1”: check if merge keys areunique in right dataset. "many_to_many” or “m:m”: allowed, but doesnot result in checks.


我环顾四周以找到有关在何处以及如何使用此功能的工作示例,但找不到任何示例。此外,当我尝试将其应用于一组 DataFrame 时我正在合并,它似乎没有改变输出。
谁能给我一个有效的例子,让我更好地理解它?
提前致谢,
马蒂亚

最佳答案

新款valdate param 将引发 MergeError如果验证失败,例如:

df1 = pd.DataFrame({'a':list('aabc'),'b':np.random.randn(4)})
df2 = pd.DataFrame({'a':list('aabc'),'b':np.random.randn(4)})

print(df1)
print(df2)

a b
0 a -2.557152
1 a -0.145969
2 b -1.629560
3 c -0.233517

a b
0 a -0.352038
1 a 0.490438
2 b 0.319452
3 c -0.599481
现在,如果我们在列 'a' 上合并没有 validate :
In[39]:
df1.merge(df2, on='a')

Out[39]:
a b_x b_y
0 a -2.557152 -0.352038
1 a -2.557152 0.490438
2 a -0.145969 -0.352038
3 a -0.145969 0.490438
4 b -1.629560 0.319452
5 c -0.233517 -0.599481
这有效,但我们为“a”获得更多行,因为“b”列不同,现在我们通过 validate='1:1' ,我们得到一个错误:
MergeError: Merge keys are not unique in either
left or right dataset; not a one-to-one merge
如果我们通过 validate='1:m'我们得到一个不同的错误:
MergeError: Merge keys are not unique in left
dataset;not a one-to-many merge
如果我们通过 'm:m',再次验证失败:
In[42]:
df1.merge(df2, on='a',validate='m:m')

Out[42]:
a b_x b_y
0 a -2.557152 -0.352038
1 a -2.557152 0.490438
2 a -0.145969 -0.352038
3 a -0.145969 0.490438
4 b -1.629560 0.319452
5 c -0.233517 -0.599481
如果我们没有通过 validate,则不会发生错误并且我们得到相同的合并 df参数
api 文档没有给出示例,但 what's new节呢,原来 github enhancement还提供了进一步的背景信息

关于python - 在合并函数 Pandas 中验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51057924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com