根据子网的值(在不同的列上)将 IP 地址增加 1
Increment IP address by 1 depending on value of subnet (on different column)
我有这个 DF,由 ipaddress 类型的对象组成。
subnet
0 10.204.26.0
1 10.204.26.0
2 10.204.26.0
3 10.204.30.0
4 10.204.30.0
5 10.204.30.0
6 10.204.30.0
7 10.204.30.0
8 10.204.30.0
9 10.204.30.0
我想创建一个新列,比如 df['ip']
,它将在 subnet
(and/or 之前的 row
)上递增,以获得每个不同的地址行,但考虑到子网确实不同。
如果子网只有一个,那么df['ip'] = df.index + df[subnet] + 1
就很容易解决问题。那会产生这样的东西:
subred ip
0 10.204.26.0 10.204.26.1
1 10.204.26.0 10.204.26.2
2 10.204.26.0 10.204.26.3
但由于子网可能不止一个,因此预期结果将是:
subred ip
0 10.204.26.0 10.204.26.1
1 10.204.26.0 10.204.26.2
2 10.204.26.0 10.204.26.3
3 10.204.30.0 10.204.30.1
4 10.204.30.0 10.204.30.2
5 10.204.30.0 10.204.30.3
6 10.204.30.0 10.204.30.4
7 10.204.30.0 10.204.30.5
8 10.204.30.0 10.204.30.6
9 10.204.30.0 10.204.30.7
如何实现?
谢谢!
试试这个。
df['ip']= df['subnet'].str[:10]+ (df.groupby('subnet').cumcount()+1).astype(str)
df
输出
subnet ip
0 10.204.26.0 10.204.26.1
1 10.204.26.0 10.204.26.2
2 10.204.26.0 10.204.26.3
3 10.204.30.0 10.204.30.1
4 10.204.30.0 10.204.30.2
5 10.204.30.0 10.204.30.3
6 10.204.30.0 10.204.30.4
7 10.204.30.0 10.204.30.5
8 10.204.30.0 10.204.30.6
9 10.204.30.0 10.204.30.7
我有这个 DF,由 ipaddress 类型的对象组成。
subnet
0 10.204.26.0
1 10.204.26.0
2 10.204.26.0
3 10.204.30.0
4 10.204.30.0
5 10.204.30.0
6 10.204.30.0
7 10.204.30.0
8 10.204.30.0
9 10.204.30.0
我想创建一个新列,比如 df['ip']
,它将在 subnet
(and/or 之前的 row
)上递增,以获得每个不同的地址行,但考虑到子网确实不同。
如果子网只有一个,那么df['ip'] = df.index + df[subnet] + 1
就很容易解决问题。那会产生这样的东西:
subred ip
0 10.204.26.0 10.204.26.1
1 10.204.26.0 10.204.26.2
2 10.204.26.0 10.204.26.3
但由于子网可能不止一个,因此预期结果将是:
subred ip
0 10.204.26.0 10.204.26.1
1 10.204.26.0 10.204.26.2
2 10.204.26.0 10.204.26.3
3 10.204.30.0 10.204.30.1
4 10.204.30.0 10.204.30.2
5 10.204.30.0 10.204.30.3
6 10.204.30.0 10.204.30.4
7 10.204.30.0 10.204.30.5
8 10.204.30.0 10.204.30.6
9 10.204.30.0 10.204.30.7
如何实现?
谢谢!
试试这个。
df['ip']= df['subnet'].str[:10]+ (df.groupby('subnet').cumcount()+1).astype(str)
df
输出
subnet ip
0 10.204.26.0 10.204.26.1
1 10.204.26.0 10.204.26.2
2 10.204.26.0 10.204.26.3
3 10.204.30.0 10.204.30.1
4 10.204.30.0 10.204.30.2
5 10.204.30.0 10.204.30.3
6 10.204.30.0 10.204.30.4
7 10.204.30.0 10.204.30.5
8 10.204.30.0 10.204.30.6
9 10.204.30.0 10.204.30.7