gpt4 book ai didi

python - 将 pandas 数据帧索引转换为基于数据帧值,同时将值更改为 bool 值

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:19 25 4
gpt4 key购买 nike

我有两个公司名称数据集,两者之间的命名差异(例如:Merck & Co. vs Merck & Co. vs Merck & Co., Inc.)

我正在尝试创建一个“ map ”,其中“Merck”的所有独特变体都与“Merck & Co.”相匹配

我当前的方法是创建一个字典,转换为数据帧,并理想地执行如下所述的转换:

    Company 1        Company 2         Company 3
0 Co1 variant 0 Co1 variant 0 Co3 variant 0
1 Co1 variant 1 Co2 variant 1
2 Co1 variant 2

应该变成:

                  Company 1       Company 2         Company 3
Co1 variant 0 True True False
Co1 variant 1 True False False
Co1 variant 2 True False False
Co2 variant 0 False True False
Co2 variant 1 False True False
Co3 variant 0 False True True

从这里开始,如果每行只有 1 个 True 值,我会将此命名变体与列标题匹配,否则我会将其与自身匹配;让最终的数据集看起来像

    Variants        Matched Name
0 Co1 variant 0 Co1 variant 0
1 Co1 variant 1 Company 1
2 Co1 variant 2 Company 1
3 Co2 variant 1 Company 2
4 Co3 variant 0 Company 3

提前感谢您提供任何意见,如果问题不够清楚,我也很乐意进一步澄清。

最佳答案

您可以堆叠原始数据框,然后按行 ID 号和变体进行分组,检查每组有多少行,如果只有一行,请选择公司,否则选择变体本身:

(df.stack().rename("Variants").rename_axis(("RowId", "Company")).reset_index()
.groupby(["RowId", "Variants"])
.apply(lambda g: g.Company.iloc[0] if g.Company.size == 1 else g.Variants.iloc[0])
.rename("Matched Names").reset_index().drop("RowId", axis = 1))

enter image description here

关于python - 将 pandas 数据帧索引转换为基于数据帧值,同时将值更改为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41641569/

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