Python 将数据帧/系列应用于NetAddress EUI构造函数
我有一个Mac地址的数据帧,需要转换。我首先执行以下操作以清除任何Python 将数据帧/系列应用于NetAddress EUI构造函数,python,pandas,mac-address,Python,Pandas,Mac Address,我有一个Mac地址的数据帧,需要转换。我首先执行以下操作以清除任何nan: df = df[pd.notnull(df["MacAddr"])]["MacAddr"] # avoid null values being passed to netaddr …然后我想解析成EUI构造函数,如下所示: from netaddr import EUI, mac_bare mac = EUI(df) mac.dialect = mac_bare 但这不起作用
nan
:
df = df[pd.notnull(df["MacAddr"])]["MacAddr"] # avoid null values being passed to netaddr
…然后我想解析成EUI
构造函数,如下所示:
from netaddr import EUI, mac_bare
mac = EUI(df)
mac.dialect = mac_bare
但这不起作用,因为EUI需要的是字符串,而不是熊猫系列。有没有办法避免这种情况
作为一个错误,我得到以下信息:
Name: MacAddr, Length: 26953, dtype: object is not str() or unicode()!
从序列中创建一个列表,然后将元素连接到一个字符串中
','.join(df[pd.notnull(df["MacAddr"])]["MacAddr"].to_list())
由于EUI构造函数目前无法解析数据帧/序列,因此我为
df.apply()
创建了一个函数,如下所示:
def main(self):
def _eui_mac_bare_func(x):
mac = EUI(x)
mac.dialect = mac_bare
return mac
series = df[pd.notnull(df["MacAddr"])]["MacAddr"] # avoid null values being passed to netaddr
new_series = series.apply(_eui_mac_bare_func) # apply function to every row
df = df.join(new_series.rename("Norm_MacAddr")) # join df and series on corresponding indices
很遗憾,EUI构造函数似乎需要某种格式,因此长字符串不兼容。不管怎样,谢谢。如果你还没有弄明白,请发布格式或预期的工作示例?