如何使用Pandas从groupby对象返回数据帧?这里的目的是读入CSV并用randIP()返回的值替换IP address列中的每个IP地址。我想通过分组来保持整个混淆数据帧的一致性(每个真正的IP映射到一个新的随机IP)。在
我试过很多方法,但这似乎是最成功的。自身.df2正在打印为熊猫。核心。格劳比.SeriesGroupBy对象。在
def __init__(self, filename):
self.df = pd.read_csv(filename)
self.grouped = self.df.groupby('IP Address')
self.df.reset_index(drop=True, inplace=True)
for i, k in self.grouped:
r = randIP()
k['IP Address'] = k['IP Address'].apply(lambda x: x.replace(x, r))
self.df2 = self.grouped
print(self.df2['IP Address'])
最好不要尝试从分组操作内部修改数据帧。相反,使用分组操作来创建新的ip,然后使用
map
将旧IP映射到新IP,然后(如果需要)将新IP分配回数据帧:将
^{pr2}$groupby
与apply
一起使用将给您一个从旧IP到新IP的系列映射:在旧IP列上使用
map
并传递这个新系列将把旧IP映射到新IP:如果要将它们重新分配回DataFrame列,可以执行以下操作:
我认为最后一个是你想要的一个综合解决方案。(在这些示例中,随机IP每次都是不同的,因为我在示例的每个部分都会再次调用
randomIP
)相关问题 更多 >
编程相关推荐