熊猫itertuples()尝试将row()追加到新的df

时间:2020-11-11 01:08:12

标签: python pandas

我有这个CSV ...

"Computer Name","IP Address"
host1, "192.168.1.1,192.168.1.2"
host2, 8.8.8.8
host3, 192.168.10.5

由于我在学习.explode()时对stackoverflow上其他人的好意

df = pd.DataFrame(data,columns=["Computer Name","IP Address"])
df['EventItem'] = df['IP Address'].str.split("\n")
df = df.explode('EventItem')
df = pd.DataFrame(df,columns=["Computer Name","EventItem"])

"Computer Name","EventItem"
host1, 192.168.1.1
host1, 192.168.1.2
host2, 8.8.8.8
host3, 192.168.10.5

现在,我需要循环遍历,检查ipaddress是公共的还是私有的,如果是,则将该行保存到新的数据框中。

df2 = pd.DataFrame(columns=["Computer Name","EventItem"])

for row in df.itertuples():
    for i in df['EventItem']:
        try:
            if ipaddress.ip_address(i).is_private:
                continue
            else:
                df2.append(index,row)
                print(i)
        except (RuntimeError, TypeError, NameError, ValueError):
                pass

df2

这确实会打印公共IP地址,但是,我一生都无法像它那样打印公共IP地址所在的“行” ...

host2 8.8.8.8

我敢肯定这只是愚蠢的事情,我将不胜感激任何建议。

谢谢!

0 个答案:

没有答案