python - 迭代不同的数据框

标签 python pandas loops dataframe iterator

我试图迭代三个数据帧以找出它们之间的差异。我有一个主数据框,其中包含所有内容,还有两个其他数据框,其中包含部分主数据框。我正在尝试编写一个 python 代码来识别其他两个文件中缺少的内容。主文件如下所示:

ID  Name
1   Mike
2   Dani
3   Scott
4   Josh
5   Nate
6   Sandy

第二个数据框如下所示:

ID  Name
1   Mike
2   Dani
3   Scott
6   Sandy

第三个数据框如下所示:

ID  Name
1   Mike
2   Dani
3   Scott
4   Josh
5   Nate

所以会有两个输出数据帧。第二个数据帧的所需输出如下所示:

ID  Name
4   Josh
5   Nate

第三个数据帧的所需输出如下所示:

ID  Name
6   Sandy

我在 Google 上没有找到类似的内容。我试过这个:

for i in second['ID'], third['ID']:
   if i not in master['ID']:
     print(i)

它返回主文件中的所有数据。

如果我尝试这段代码:

import pandas as pd

names = ["Mike", "Dani", "Scott", "Josh", "Nate", "Sandy"]
ids = [1, 2, 3, 4, 5, 6]
master = pd.DataFrame({"ID": ids, "Name": names})
# print(master)

names_second = ["Mike", "Dani", "Scott", "Sandy"]
ids_second = [1, 2, 3, 6]
second = pd.DataFrame({"ID": ids_second, "Name": names_second})
# print(second)

names_third = ["Mike", "Dani", "Scott", "Josh", "Nate"]
ids_third = [1, 2, 3, 4, 5]
third = pd.DataFrame({"ID": ids_third, "Name": names_third})
# print(third)
for i in master['ID']:
    if i not in second["ID"]:
        print("NOT IN SECOND", i)
    if i not in third["ID"]:
        print("NOT IN THIRD", i)

输出::

NOT IN SECOND 4
NOT IN SECOND 5
NOT IN THIRD 5
NOT IN SECOND 6
NOT IN THIRD 6

为什么显示NOT IN SECOND 6NOT IN THIRD 5

有什么建议吗?提前致谢。

最佳答案

您可以尝试将.isin~一起使用来过滤数据帧。要与第二个进行比较,您可以使用 master[~master.ID.isin(second.ID)] ,第三个类似:

cmp_master_second, cmp_master_third = master[~master.ID.isin(second.ID)],  master[~master.ID.isin(third.ID)]

print(cmp_master_second)
print('\n-------- Seperate dataframes -----------\n')
print(cmp_master_third)

结果:

    Name
ID      
4   Josh
5   Nate

-------- Seperate dataframes -----------

     Name
ID       
6   Sandy

关于python - 迭代不同的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959624/

相关文章:

python - 如何在wxTextCtrl中动态对齐文本?

python - 没有 np.nan 的标量和 pandas 系列的 np.maximum

java - 如何使用前一个值来增加数组的元素?

python - 由于某种原因,即使该项目在范围内,我仍然收到索引错误

python - 在Python中处理终端颜色代码(ANSI颜色转义代码)

javascript - Python 脚本转换为 Chrome 扩展

python - Pandas 数据帧,ValueError : shape mismatch: objects cannot be broadcast to a single shape

python - Pandas 数据框列删除第一个特定字符之前的字符串

python - 如何计算 pandas 数据框中一系列单元格中 2 个值以内的单元格?

loops - 如何从NodeMCU中的无限重启循环中恢复?