循环遍历数据帧的名称,以删除DUP和group by,并在Python中创建新的数据帧

循环遍历数据帧的名称,以删除DUP和group by,并在Python中创建新的数据帧,python,loops,dataframe,for-loop,iteration,Python,Loops,Dataframe,For Loop,Iteration,我有几个数据帧。我尝试对它们执行三个操作,删除重复项,然后对两列进行分组,得到第三列的大小,然后从这两个步骤中的每一个创建数据帧。我有个错误 这是我的密码: DF_NAMES_LIST = ["DF1", "DF2", "DF3"] For x in DF_NAMES_LIST: x_2 = x.drop_duplicates("var1", "var2", "var3") x_3 = x_2.groupby(["var", "var2"]).var3.size() 代码适用

我有几个数据帧。我尝试对它们执行三个操作,删除重复项,然后对两列进行分组,得到第三列的大小,然后从这两个步骤中的每一个创建数据帧。我有个错误

这是我的密码:

DF_NAMES_LIST = ["DF1", "DF2", "DF3"]

For x in DF_NAMES_LIST:
    x_2 = x.drop_duplicates("var1", "var2", "var3")
    x_3 = x_2.groupby(["var", "var2"]).var3.size()
代码适用于循环外的单个DFs,但当我运行循环时,我得到:

'str' object has no attribute 'drop_duplicates'
有什么见解吗


谢谢

因为您正在循环数据帧的名称,而不是数据帧本身。这些名称只是字符串,没有任何group_by或drop_duplicates方法。您应该在实际数据帧上循环 像这样:

DF_NAMES_LIST = [DF1, DF2, DF3]

for x in DF_NAMES_LIST:
   x_2 = x.drop_duplicates("var1", "var2", "var3")
   x_3 = x_2.groupby(["var", "var2"]).var3.size()

因为您正在循环数据帧的名称,而不是数据帧本身。这些名称只是字符串,没有任何group_by或drop_duplicates方法。您应该在实际数据帧上循环 像这样:

DF_NAMES_LIST = [DF1, DF2, DF3]

for x in DF_NAMES_LIST:
   x_2 = x.drop_duplicates("var1", "var2", "var3")
   x_3 = x_2.groupby(["var", "var2"]).var3.size()

谢谢,这很有道理!我试过了,但是现在得到了这个错误ValueError:对于参数“inplace”预期的类型bool,接收到的类型str。我在第一步中尝试在“var3”之后添加inplace=True,但是它说太多的参数我需要在drop\u重复项周围加两个括号。这就解决了问题。谢谢谢谢,这很有道理!我试过了,但是现在得到了这个错误ValueError:对于参数“inplace”预期的类型bool,接收到的类型str。我在第一步中尝试在“var3”之后添加inplace=True,但是它说太多的参数我需要在drop\u重复项周围加两个括号。这就解决了问题。谢谢