Как я могу создать столбец в pandas из другого столбца, соответствующего списку - PullRequest
2 голосов
/ 14 апреля 2020

У меня есть DataFrame в pandas, и в одном из столбцов есть куча номеров местоположений. Пример:

    location
 1. 33
 2. 223
 3. 66

, поэтому я хочу создать еще один столбец, который переводит эти числа в номер региона из списка. например:

list = [[33, 428], [223, 691], [521, 53], [83, 96], [423, 614], [360, 311], [55, 66]]

regionNumber = [1, 2, 3, 4, 5, 6, 7]

поэтому результат должен быть

location region
33       1 
223      2
66       7

, поэтому я попытался сделать это:

        def regionid():
            i = 0
            for row in list:
                for item in row:
                    if dataframe["location"] == item:
                        return regionNumber[i]
                i = i + 1

        dataframe['Region'] = dataframe.apply(regionid(), axis=1)

Я продолжаю получать "f" Значение истинности {type (self). name } неоднозначно. «ValueError: Значение истинности Series неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().» Я не уверен, что делать .

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Создайте словарь и используйте его в map :

lst = [[33, 428], [223, 691], [521, 53], [83, 96], [423, 614], [360, 311], [55, 66]]
regionNumber = [1, 2, 3, 4, 5, 6, 7]

lookup = {location : r for locations, r  in zip(lst, regionNumber) for location in locations }

df['region'] = df['location'].map(lookup)

print(df)

Output

   location  region
0        33       1
1       223       2
2        66       7

This часть:

lookup = {location : r for locations, r  in zip(lst, regionNumber) for location in locations }

- это словарь для понимания , (подробнее о понимании здесь ). Это Python выражение для создания словарей, эквивалентное следующему вложенному для l oop:

lookup = {} 
for locations, r in zip(lst, regionNumber):
    for location in locations:
        lookup[location] = r
0 голосов
/ 14 апреля 2020

Попробуйте это:

region_map = dict(zip(regionNumber, list))
df['region'] = df['location'].map(region_map)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...