微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何列出包含数据的列的最频繁组合

如何解决如何列出包含数据的列的最频繁组合

你好,

我正在处理以混乱和不同而闻名的地质数据集。我想要做的是:输出一个列组合列表,其中包含一定数量的列的最多无 NaN 行数。

例如

A B C D E F
2 6 3 7 7 3 
4 5 6 7 5 4 
3 4 x x x x 
4 5 x x x x 
6 7 x x x x
x x x 5 6 7 
x x x 7 5 8

如果我输入 2,那么它会返回一个包含 ['A','B'] 和 5 的列表,因为 A 和 B 列有 5 个完整的行。如果我输入 3,则返回 ['D','E','F'] 和 4,因为它们有 4 个完整的行。如果我输入 5,那么我会得到 ['A','B','C','D','F'] 和 2,因为它们有 2 个完整的行。

提前致谢!

解决方法

它认为这就是你想要的。这不是返回列列表,而是返回一个或多个列列表,以说明“最佳”非 NA 行数存在并列的情况。

import pandas as pd
from itertools import combinations
from math import nan

def best_combinations(df,n_cols):
    best_cols = []
    best_length = 0
    for cols in combinations(df.columns,n_cols):
        subdf = df.loc[:,list(cols)].dropna()
        if len(subdf) > best_length:
            best_length = len(subdf)
            best_cols = [cols]
        elif (len(subdf) == best_length) and (best_length > 0):
            best_cols.append(cols)
    return best_cols,best_length

在您的数据框中:

df = pd.DataFrame({
 'A': {0: '2',1: '4',2: '3',3: '4',4: '6',5: nan,6: nan},'B': {0: '6',1: '5',2: '4',3: '5',4: '7','C': {0: '3',1: '6',2: nan,3: nan,4: nan,'D': {0: '7',1: '7',5: '5',6: '7'},'E': {0: '7',5: '6',6: '5'},'F': {0: '3',5: '7',6: '8'}}
)

best_combinations(df,2)
# returns:
[('A','B')],5

best_combinations(df,3)
[('D','E','F')],4

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?