Условие с использованием диапазона индекса df - PullRequest
2 голосов
/ 21 мая 2019

Я хочу добавить столбец региона к df1, используя ip range, указанное в df2, учитывая два фрейма данных:

  • df1 имеет ip_address
  • df2 имеет ip_from, ip_to, region

Вы можете сделать условный оператор, используя индексы?если df1.ip[0] находится между конкретными ip, добавить регион в df1?Я предполагаю, что в операторе if должен быть цикл, чтобы он мог перебирать df2, чтобы видеть, где находятся диапазоны ip, и захватывать область.

enter image description here

Я знаю, что, добавляя каждое условие вручную, это будет работать, но есть ли способ сделать цикл условий по индексу?

region=[]
for row in df1['ip']:
    if row > 15:
        region.append('D')

    elif row > 10:
        region.append('C')

    elif row > 5:
        region.append('B')

    else:
        region.append('A')

df1['region'] = region

Чтобы сделать итерацию по строкам, можно ли это сделать?сюда?

region = []
# For each row in the column,
for row in df1['ip']:
    if (row >= df2.loc[row,'ip_from']) and (row <= df2.loc[row,'ip_to']):
        region.append(df2.loc[row,'region'])

1 Ответ

0 голосов
/ 21 мая 2019

Вы можете использовать список регионов с индексами, которые соответствуют значению IP-адреса:

df1 = {'ip': [13,4,7,2], 'region': []}
df2 = list('AAAAAABBBBBCCCCCDDDDD')
for i in range(len(df1['ip'])):
    df1['region'].append(df2[df1['ip'][i]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...