【发布时间】:2020-05-29 11:28:08
【问题描述】:
注意:更正 - 代码返回 AttributeError: 'str' object has no attribute 'drop_duplicates'
我正在尝试遍历多个 dfs,并使用
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
当我len() df 时,它们和以前一样。即使我单独 df.drop_duplicates 他们在 len() 中缩短了大约 70%。
或者,我尝试在 > 和.drop_duplicates 处创建一个中间对象。这是行不通的,我相信这是因为变化保持在本地。
【问题讨论】:
-
dfs = dfs.append(var.drop_duplicates(subset =['user_id']))。您需要将修改后的 df 分配回去。您可以进行此更改并检查一次吗?
-
非常感谢您的快速回复。但是,此修复返回:AttributeError:“str”对象没有属性“drop_duplicates”。我意识到这个错误也出现在我之前的代码中,我只是没有正确调用该函数。
标签: python pandas global-variables unique drop-duplicates