Как исправить этот метод для создания кортежа только с уникальными значениями, когда данные поступают через цикл for из сгруппированного 2D-кадра данных? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь извлечь столбец из 2D-кадра данных и манипулировать им, чтобы он был кортежем и не имел повторяющихся значений.

Мое решение по созданию кортежа работало нормально, создайте кортеж (temp_tuple) , который будет содержать входящее значение и добавит его к кортежу (xax_country) .

Теперь я хочу проверить (temp_tuple) перед добавлением его в (xax_country) , чтобы убедиться, что оно не соответствует ни одному из значений, уже имеющихся в (xax_country) .

#read the data from csv file using pandas.
salary = pd.read_csv('EuropeanDevelopers.csv') 
salary.columns = ['Experience', 'Salary', 'Gender', 'Country']
salary.head()

xax_country=()
salary = salary.groupby(['Country', 'Gender'])

for a, a_salary in salary: 

    #need to find a way to add the country only if it has not been added 

    if not(any(a[0] in i for i in xax_country)
        temptuple = (a[0],)#syntax error happens here
    else
        temptuple = (0,)

    if temptuple != 0    
        xax_country +=temptuple

Однако я получаю синтаксическую ошибку для той же самой вещи, которая работала до добавления операторов if в.

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

1 Ответ

0 голосов
/ 27 сентября 2019

Я просто удалил весь цикл петель и сделал это.

xax_country=salary
xax_country = salary.sort_values(['Country'])
xax_country = xax_country.drop_duplicates(['Country'])
xax_country = tuple(list(xax_country['Country']))

, что сделало xax_country в кортеж только по странам в порядке.

Даже не знал о drop_duplicates, что отличный инструмент.

...