我有一个包含多个数据框的列表,我试图从列表中删除不满足条件的所有数据框,它们必须具有超过 1000 个唯一 ID。
每个数据框都有几列包括 ID,总共 14 个数据框组成列表。
我发现此代码适用于列表中的特定项目,但想找到一个更好的解决方案,不需要我遍历列表中的项目:
[i for i in list if list[0]['ID'].nunique() > 1000]
非常欢迎所有建议,感谢您的帮助。
答案 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'