gpt4 book ai didi

python - 根据条件拆分重复项的数据框

转载 作者:行者123 更新时间:2023-12-01 22:54:55 25 4
gpt4 key购买 nike

我有一个重复电子邮件地址的数据框。

<表类="s-表"><头>身份证电子邮件地址姓名国家距离IDLen非南<正文>39203920john@gmail.com约翰英国128632323john@gmail.comNaN英国1255

我创建了两个额外的列来计算 ID 的长度以及每行有多少个非 NaN 字段。我想创建 2 个新数据框:

  1. df1。重复行具有较高的 NonNAN值(value);或者如果它们相同,则选择最低的 IDLen .

  2. df2。其余行

我正在考虑使用 df.duplicated()功能,但它只看第一个或最后一个,我需要更复杂的东西。

提前致谢。

最佳答案

您可以为要为 df1 选择的行创建一个 bool 掩码 - 然后该掩码的倒数会自动为 df2 选择行。


对于 EmailAddress 相同的每个组:

  • mask 选择 NonNAN 具有最大值的所有行。

  • 如果mask选择多个值-

    它必须选择 IDLen 最小的行。

  • 如果 mask 仍然选择多个值 -

    只拿第一个。

def f(df):
mask = df['NonNAN'] == df['NonNAN'].max()
if mask.sum() > 1:
mask = mask & (df['IDLen'] == df.loc[mask, 'IDLen'].min())
if mask.sum() > 1:
mask.iloc[mask.argmax()+1 : ] = False
return mask

mask = df.groupby('EmailAddress', group_keys=False).apply(f)
mask = mask.reindex(df.index)

df1 = df[mask]
df2 = df[~mask]

关于python - 根据条件拆分重复项的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73507063/

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