如何使用另一列作为参数来修改数据帧列值



我有一个数据帧(数据(,如下所示:

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']((之类的方法获得以下结果。

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

我知道应用方法没问题:

def sub_mac(x):
return x.mac[:x.len]
data.mac = data.apply(sub_mac, axis=1)

data.mac = data.apply(lamda x: x.mac[:x.len], axis=1)

但是我想知道是否有另一种方法可以处理它? 例如,像 SQL 这样的方法:

select SUBSTRING(mac, 0, len) as mac_sub from data;

感谢。

试试这个:

来源自由度:

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

最新更新