【问题标题】:Making df columns unique to one column permanently outside of df loop function在 df 循环函数之外永久使 df 列对一列唯一
【发布时间】: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


【解决方案1】:

修复

.drop_duplicates(subset =['user_id']) 添加到 csv 导入的末尾,因为它们变得全球化似乎可以解决问题。

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).drop_duplicates(subset =['user_id'])
        # Add each newly made df var to a list
        dfs.append(var) # rmv duplicates
    return print('Your variables are: ',sorted(dfs))

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2019-02-12
    • 2018-11-05
    • 2019-08-13
    • 2014-11-30
    • 2019-04-13
    • 2016-09-16
    • 2021-12-26
    • 2021-08-25
    相关资源
    最近更新 更多