根据条件从列表中删除数据帧?

时间:2021-05-24 13:21:28

标签: python

我有一个包含多个数据框的列表,我试图从列表中删除不满足条件的所有数据框,它们必须具有超过 1000 个唯一 ID。

每个数据框都有几列包括 ID,总共 14 个数据框组成列表。

我发现此代码适用于列表中的特定项目,但想找到一个更好的解决方案,不需要我遍历列表中的项目:

[i for i in list if list[0]['ID'].nunique() > 1000]

非常欢迎所有建议,感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

<块引用>

找到一个不需要我遍历列表中项目的更好的解决方案

如果您不想使用循环,那么递归函数可以实现与循环相同的结果。

def loop(df):
    if df['id'].nunique() > 1000:
         list_dfs_out.append(df)
         return loop(df + 1)

答案 1 :(得分:1)

你可以试试这个,但所有的dfs都需要'ID'列:

list_dfs_in = [df1, df2, df3]
list_dfs_out = []
for df in list_dfs:
    if df['id'].nunique() > 1000:
        list_dfs_out.append(df)

#print(list_dfs_out)

或者如果你想坚持你的列表理解,你可以这样做:

list_dfs_in = [df1, df2, df3]
[df for df in list_dfs_in if df['ID'].nunique() > 1000]

注意:请尽量不要使用原生 python 名称,例如 list,而应为它们命名为 'lst'

相关问题