繁体   English   中英

为什么 is.merge() 删除我在 Pandas 中的所有列?

[英]Why is .merge() removing all of my columns in Pandas?

我正在开发一个 GUI,它可以编辑和比较 CSV 个文件,供我在健康数据作业中每月上传的用户上传。 我已经为我们的一个客户业务建立了这个操作,但现在我正在尝试重新配置它以适用于我们的其他客户业务。 它目前可以正常工作,但由于某种原因,我的 new_users dataframe 在合并后打印为空白。 对于我构建的另一个 package,这段代码可以正常工作。 我的第一个想法可能是因为 UniqueIDs 需要 10 个字符,但即使在输入字符要求后,我仍然为 new_users 得到一个空的 dataframe。 这让我难住了。

def client_merge(ef_in, ul_in):
    pd.set_option('mode.chained_assignment', None)

    ef_in['UniqueID'] = ef_in['UniqueID'].astype(object)
    ef_in['HireDate'] = ef_in['HireDate'].astype(object)
    ef_in['DateOfBirth'] = ef_in['DateOfBirth'].astype(object)
    ul_in['UniqueID'] = ul_in['UniqueID'].astype(object)
    ul_in['Action'] = ul_in['Action'].astype(object)
    ul_in['ZipCode'] = ul_in['ZipCode'].astype(object)

    df = pd.concat(([ef_in, ul_in]), axis=0, ignore_index=True, sort=False)
    df.drop_duplicates(subset=["UniqueID"], keep=False, inplace=True)

    df['UniqueID'] = df['UniqueID'].str.rjust(10, "0")
    ef_in['UniqueID'] = ef_in['UniqueID'].str.rjust(10, "0")
    ul_in['UniqueID'] = ul_in['UniqueID'].str.rjust(10, "0")

    print(ef_in)
    new_users = df.merge(ef_in)
    #print(new_users)
    disable_users = df.merge(ul_in)
    #print(ul_in)

    disable_users['Action'].fillna('Disable', inplace=True)
    ready_to_print_file = pd.concat([new_users, disable_users], ignore_index=False)

    rtpf1 = ready_to_print_file[ready_to_print_file["FirstName"].str.contains("companytest") == False]
    rtpf2 = rtpf1[rtpf1["FirstName"].str.contains("Clarks", "test") == False]

    rtpf2.to_csv(path, header=True, index=False)

我已经玩了两个小时了 Excel 和我的文件交叉引用手工完成的比较,它绝对不会返回空白。 我在下面附上了我其他客户的工作代码:

def client_merge(ef_in, ul_in):
    pd.set_option('mode.chained_assignment', None)

    ef_in['EmployeeId'] = ef_in['EmployeeId'].astype(object)
    ul_in['EmployeeId'] = ul_in['EmployeeId'].astype(object)
    ul_in['Action'] = ul_in['Action'].astype(object)
    ul_in['PrimaryMemberEmployeeId'] = ul_in['PrimaryMemberEmployeeId'].astype(object)
    ul_in['ZipCode'] = ul_in['ZipCode'].astype(object)

    df = pd.concat(([ef_in, ul_in]), axis=0, ignore_index=True, sort=False)
    df.drop_duplicates(subset=["EmployeeId"], keep=False, inplace=True)

    new_users = df.merge(ef_in)
    disable_users = df.merge(ul_in)

    disable_users['Action'].fillna('Disable', inplace=True)
    ready_to_print_file = pd.concat([new_users, disable_users], ignore_index=False)

    rtpf1 = ready_to_print_file[ready_to_print_file["FirstName"].str.contains("admin") == False]
    rtpf2 = rtpf1[rtpf1["FirstName"].str.contains("client") == False]

    rtpf2.to_csv(path, header=True, index=False)

df1.merge(ef_in, how='left', on='a')

有关详细信息,请参阅链接:

pandas dataframe合并参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM