python - 通过随机化 Pandas 数据帧中每一行中的最后一个字节来生成 IP 地址
问题描述
我正在输入一个 IP 地址。我想随机化 IP 地址范围 0 到 254 之间的最后一个字节,并在 pandas 数据帧的每一行中打印 IP 地址。
例如:
给定的输入 IP 地址是:'10.10.10.0'
预期的输出:
>> 10.10.10.5
>> 10.10.10.173
>> 10.10.10.34
等等......
这是我使用的示例代码:
import pandas as pd
import numpy as np
import random
from random import randint
df_header="IPV4_SRC_ADDR"
def func(IPV4_SRC_ADDR= "253.253.253.253", filename=None):
df = pd.DataFrame(0, index=np.arange(1000), columns=df_header) #generating a dataframe with all initial values as 0
if(IPV4_SRC_ADDR!="253.253.253.253"):
IPV4_SRC_ADDR = IPV4_SRC_ADDR.rsplit('.', 1)[0]
df['IPV4_SRC_ADDR']=IPV4_SRC_ADDR + '.' + str(np.random.randint(0, 254, df.shape[0]))
else:
df['IPV4_SRC_ADDR']=IPV4_SRC_ADDR
if(filename is not None):
df.to_csv(filename, mode='a', header=False)
else:
df.to_csv('output.csv')
if __name__== "__main__":
generate_netflow(IPV4_SRC_ADDR="10.10.10.0")
其中,IPV4_SRC_ADDR
是变量,'IPV4_SRC_ADDR'
是列名。
然而,我使用这段代码的结果是这样的:
"10.10.10.[118 139 117 39 127 11 228 116 15 118 132 217 41 202 99 241 168 240]"
每一列都有这个值。
我知道我在str(np.random.randint(0, 254, df.shape[0]))
.
我认为问题出在将数组转换为字符串时。
解决方案
我假设您想获取 IPv4 地址列表。
为此,您可以使用列表推导:
df['IPV4_SRC_ADDR'] = [IPV4_SRC_ADDR+'.' + str(x) for x in np.random.randint(0,254,df.shape[0])]
这将每个随机数作为字符串与给定的起始字符串组合在一起。
推荐阅读
- python - Anaconda 安装的 cudatoolkit 和 cudnn 会影响我当前的配置吗?
- python - 如果索引不同,如何停止 Pandas 中的 Shifting 列
- artifactory - 从 jcenter 下载时出现工件证书错误
- spring - 全栈应用程序 - 在哪里填写非用户定义的字段?| 正面还是背面?
- redis - 从服务器获取 redis 密钥
- android - 如何让 Apps Link Assistant 打印到 Android Studio 中的 Logcat?
- angular - Angular 表单数组,第一个索引始终为空
- python - 当它不断失败时,如何在 Pycharm 中安装旧版本的 Pip?
- python - 试图将带有边缘的 txt.file 转换为 edgelist
- c - 使用 strtok 并填充数组