Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 将列添加到数据帧的每一行_Json_Pandas - Fatal编程技术网

Json 将列添加到数据帧的每一行

Json 将列添加到数据帧的每一行,json,pandas,Json,Pandas,我有一个熊猫数据框(df),它有“ip”、“country”、“city”列。此数据帧df有许多行(~50000),这与不同的IP相同。我想对每个IP进行“whois”查找,获得更多属性,并将这些属性添加到现有数据帧df中 例如,从whois的结果中,我检索“asn”、“asn\U cidr”、“电子邮件”、“地址”和“管理员姓名” 目前,这就是我正在做的(示例代码): df['ip']看起来像这样: SS-MacBook-Pro:src SS$ python exRepList_0.21.py

我有一个熊猫数据框(df),它有“ip”、“country”、“city”列。此数据帧df有许多行(~50000),这与不同的IP相同。我想对每个IP进行“whois”查找,获得更多属性,并将这些属性添加到现有数据帧df中

例如,从whois的结果中,我检索“asn”、“asn\U cidr”、“电子邮件”、“地址”和“管理员姓名”

目前,这就是我正在做的(示例代码):

df['ip']看起来像这样:

SS-MacBook-Pro:src SS$ python exRepList_0.21.py
0        46.4.123.15
1      222.136.71.19
2      27.254.67.157
3       37.48.125.51
4     153.194.72.226
5    116.117.253.243
6      91.200.12.111
7      60.173.82.156
8         60.28.1.43
9       36.72.228.72
Name: ip, dtype: object
SSs-MacBook-Pro:src SS$
问题:以上代码有效。但是,它会对同一IP进行大量冗余查找。例如:为了填充adminName列,它获取所有50000个IP,获取它们的JSON对象,检索管理员名称,填充,然后转到下一个属性。同样,对于每50000个IP,也会有相同的结果。。。 我想对每个IP执行一次查找,获取结果JSON对象,解析JSON文件中所有必要的属性,在新数据帧(或现有数据帧)中填充一行,然后转到下一个IP地址。类似于:[不确定这种方法是否有效/好…]

for idx, row in df.iterrows():
    ip      = str(row['ip']).strip()
    obj     = IPWhois(ip)
    results = obj.lookup_rdap(depth=1)
    # Now, parse 'results' to get all the needed attributes.

.@user Pandas可以读取JSON进行一次调用获取JSON并解析它。知道df['ip']是什么样子会很有帮助。@user请添加到问题。一个结果是,。。。添加到问题其他ppl可能看不到评论。添加了df['ip']的外观。@user您在第二个过程中走对了轨道!这种方法是有效的。使用它。@user Pandas可以读取JSON进行一次调用获取JSON并解析它。知道df['ip']是什么样子会很有帮助。@user请添加到问题。一个结果是,。。。添加到问题其他ppl可能看不到评论。添加了df['ip']的外观。@user您在第二个过程中走对了轨道!这种方法是有效的。使用它。
for idx, row in df.iterrows():
    ip      = str(row['ip']).strip()
    obj     = IPWhois(ip)
    results = obj.lookup_rdap(depth=1)
    # Now, parse 'results' to get all the needed attributes.