gpt4 book ai didi

python - 如何使用比较其他两列的值创建新列?

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:51 27 4
gpt4 key购买 nike

我正在开发一个项目,将对拥有计算机帐户的员工进行审计。我想打印一个数据框,其中包含两个新列。这与比较数据帧中的列问题不同,因为我正在使用字符串。我还需要做一些模糊逻辑,但那是更进一步的事情。

我收到的数据位于 Excel 表格中。它来 self 无法控制的两个来源,因此我将它们格式化为 [First Name, Last Name] 并将它们打印到控制台,以确保我正在使用的数据是正确的。我将 .xls 转换为 .csv 文件,格式化信息,并能够在具有两列的单个数据框中输出两个名称列表,但无法将我想要的值放在最后两列中。我使用了查询(返回 True/False,而不是名称)、diff 和正则表达式。我认为我只是错误地使用了这些工具。

    import pandas as pd

nd = {'col1': ["Abraham Hansen","Demetrius McMahon","Hilary
Emerson","Amelia H. Hayden","Abraham Oliver"],
'col2': ["Abraham Hansen","Abe Oliver","Hillary Emerson","DJ
McMahon","Amelia H. Hayden"]}
info = pd.DataFrame(data=nd)

for row in info:
if info.col1.value not in info.col2:
info["Need Account"] = info.col1.value

if info.col2.value not in info.col1:
info["Delete Account"] = info.col2.value

print(info)

我想要的是一个包含 2 列的新数据框:需要帐户和删除帐户,并根据数据框中的其他列填写适当的值。在这种情况下,我收到错误“系列”没有属性“值”。这是我的预期输出的示例:

    df_out: 
Need Account Delete Account
Demetrius McMahon Abe Oliver
Abraham Oliver Hillary Emerson
Hilary Emerson DJ McMahon

从这个列表中,我可以查看谁的昵称出现,并从那里削减列表。

最佳答案

您想使用isinnp.where有条件地分配新值:

info['Need Account'] = np.where(~info['col1'].isin(info['col2']), info['col1'], np.NaN)
info['Delete Account'] = np.where(~info['col2'].isin(info['col1']), info['col2'], np.NaN)

col1 col2 Need Account Delete Account
0 Abraham Hansen Abraham Hansen NaN NaN
1 Demetrius McMahon Abe Oliver Demetrius McMahon Abe Oliver
2 Hilary Emerson Hillary Emerson Hilary Emerson Hillary Emerson
3 Amelia H. Hayden DJ McMahon NaN DJ McMahon
4 Abraham Oliver Amelia H. Hayden Abraham Oliver NaN
<小时/>

或者如果您想要一个新的数据框,就像您在问题中所述:

need = np.where(~info['col1'].isin(info['col2']), info['col1'], np.NaN)
delete = np.where(~info['col2'].isin(info['col1']), info['col2'], np.NaN)

newdf = pd.DataFrame({'Need Account':need,
'Delete Account':delete})

Need Account Delete Account
0 NaN NaN
1 Demetrius McMahon Abe Oliver
2 Hilary Emerson Hillary Emerson
3 NaN DJ McMahon
4 Abraham Oliver NaN

关于python - 如何使用比较其他两列的值创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56876749/

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