Примечание: исправление - код возвращает AttributeError: объект 'str' не имеет атрибута 'drop_duplicates'
Я пытаюсь выполнить l oop через несколько dfs и уменьшить мои Столбец user_id для только уникальных значений с использованием функции df.drop_duplicates(subset =['user_id']
.
Мне нужно, чтобы это было глобальное изменение, и я пытаюсь включить его в свою функцию, которая импортирует файлы .csv и назначает их их имени файла . Это работает отлично, но когда я пытаюсь добавить функцию drop_duplicates, она, похоже, ничего не делает:
def assign_vars(files = os.listdir()):
# Make list of variable names using file name
variables = [make_var(file) for file in files]
# Start list to place dfs into
dfs = []
for var,file in zip(variables,files):
# Use globals to assign dfs to file names
globals()[var] = pd.read_csv(file)
#<<1>>
# Add each newly made df var to a list
dfs.append(var.drop_duplicates(subset =['user_id'])) # rmv duplicates
return print('Your variables are: ',sorted(dfs))
Это возвращает ошибку атрибута. Кажется, что var обрабатывается как str вместо df
Когда I len()
df, они остаются такими же, как и раньше. Хотя, когда я индивидуально df.drop_duplicates
, они укорачиваются в len()
примерно на 70%.
В качестве альтернативы, я попытался создать средний объект в <<1>>, а затем .drop_duplicates
. Это не работает, и я считаю, что это происходит потому, что изменение остается локальным.