Python 如何使用另一列作为参数修改DataFrame列值
我有这样一个数据帧(数据):Python 如何使用另一列作为参数修改DataFrame列值,python,python-3.x,pandas,pandas-groupby,Python,Python 3.x,Pandas,Pandas Groupby,我有这样一个数据帧(数据): mac len corp detail 18025 14:1F:BA 8 IeeeRegi IEEE Registration Authority 18026 14:1F:BA:00:00:00 10 Shenzhen Shenzhen Mining Technology Co.,Ltd. 1802
mac len corp detail
18025 14:1F:BA 8 IeeeRegi IEEE Registration Authority
18026 14:1F:BA:00:00:00 10 Shenzhen Shenzhen Mining Technology Co.,Ltd.
18027 14:1F:BA:10:00:00 10 Gloquad NaN
18028 14:1F:BA:20:00:00 10 Deutsche Deutsche Energieversorgung GmbH
18029 14:1F:BA:30:00:00 10 Private NaN
如何使用data['mac'].str.slice(0,data['len'])等方法获得以下结果
我知道应用方法是可以的:
def sub_mac(x):
return x.mac[:x.len]
data.mac = data.apply(sub_mac, axis=1)
或
但我想知道是否有其他方法来处理它?
例如,sql之类的方法:
select SUBSTRING(mac, 0, len) as mac_sub from data;
thx.试试这个:
资料来源:
In [8]: df
Out[8]:
mac len corp detail
18025 14:1F:BA 8 IeeeRegi IEEE Registration Authority
18026 14:1F:BA:00:00:00 10 Shenzhen Shenzhen Mining Technology Co.,Ltd.
18027 14:1F:BA:10:00:00 10 Gloquad NaN
18028 14:1F:BA:20:00:00 10 Deutsche Deutsche Energieversorgung GmbH
18029 14:1F:BA:30:00:00 10 Private NaN
解决方案:
In [9]: df['mac'] = df.groupby('len')['mac'].transform(lambda x: x.str[:x.name])
结果:
In [10]: df
Out[10]:
mac len corp detail
18025 14:1F:BA 8 IeeeRegi IEEE Registration Authority
18026 14:1F:BA:0 10 Shenzhen Shenzhen Mining Technology Co.,Ltd.
18027 14:1F:BA:1 10 Gloquad NaN
18028 14:1F:BA:2 10 Deutsche Deutsche Energieversorgung GmbH
18029 14:1F:BA:3 10 Private NaN
试试这个:
资料来源:
In [8]: df
Out[8]:
mac len corp detail
18025 14:1F:BA 8 IeeeRegi IEEE Registration Authority
18026 14:1F:BA:00:00:00 10 Shenzhen Shenzhen Mining Technology Co.,Ltd.
18027 14:1F:BA:10:00:00 10 Gloquad NaN
18028 14:1F:BA:20:00:00 10 Deutsche Deutsche Energieversorgung GmbH
18029 14:1F:BA:30:00:00 10 Private NaN
解决方案:
In [9]: df['mac'] = df.groupby('len')['mac'].transform(lambda x: x.str[:x.name])
结果:
In [10]: df
Out[10]:
mac len corp detail
18025 14:1F:BA 8 IeeeRegi IEEE Registration Authority
18026 14:1F:BA:0 10 Shenzhen Shenzhen Mining Technology Co.,Ltd.
18027 14:1F:BA:1 10 Gloquad NaN
18028 14:1F:BA:2 10 Deutsche Deutsche Energieversorgung GmbH
18029 14:1F:BA:3 10 Private NaN