Python 3.x 在大熊猫数据帧中查找排列?

Python 3.x 在大熊猫数据帧中查找排列?,python-3.x,pandas,permutation,Python 3.x,Pandas,Permutation,我有一个相当大的数据帧,基本上如下所示: df_apple = pd.DataFrame({'_id': ['A','B' ,'C'], 'apple': ['1', '0', '1'], 'orange': ['1', '1', '0'], 'kiwi': ['1', '0', '1']}) 我有一些列,每个\u id都有功能和二进制分类。我试图找到苹果、橙色和猕猴桃的每个排列/组合的所有个体(\u id)的频率和总数。这与这个问题类似 在这个玩具盒中,apple、orange和kiwi组

我有一个相当大的数据帧,基本上如下所示:

df_apple = pd.DataFrame({'_id': ['A','B' ,'C'], 'apple': ['1', '0', '1'], 'orange': ['1', '1', '0'],  'kiwi': ['1', '0', '1']})
我有一些列,每个
\u id
都有功能和二进制分类。我试图找到苹果、橙色和猕猴桃的每个排列/组合的所有个体(
\u id
)的频率和总数。这与这个问题类似

在这个玩具盒中,
apple
orange
kiwi
组合出现一次(
\u id==A
),而
apple==0&orange==1&kiwi==0
组合则根本不出现

我正在尝试创建一个应包含以下信息的输出:

df_combination = pd.DataFrame({'_id': ['Apple, Orange and Kiwi','Only Orange' ,'Apple and Kiwi but not Orang'], 'Count': ['1', '1', '1']})
i、 e.一个数据帧告诉我,找到哪种组合和频率。我对根本不出现的组合不感兴趣


然而,我的dataframe大约有300列。我不能预先指定它们,而计算解决这个问题需要花费很多时间。有什么好办法解决这个问题吗

看看这是否符合您的需要:

import pandas as pd

df_apple = pd.DataFrame({'_id':    ['A', 'B', 'C'],
                         'apple':  ['1', '0', '1'],
                         'orange': ['1', '1', '0'],
                         'kiwi':   ['1', '0', '1']})

df_counts = df_apple.groupby(by=tuple(df_apple.columns[1:])).count()
idx_str = [[df_counts.index.names[i] for i, v in enumerate(idx) if v != '0']
           for idx in df_counts.index]
idx_str = [" and ".join((", ".join(s[:-1]), s[-1])) if len(s) > 1 else s[0] for s in idx_str]
df_counts.index = idx_str
df_counts.columns = ["count"]
df_counts = df_counts.T

print(df_counts)
>>>        orange  apple and kiwi  apple, kiwi and orange
    count       1               1                       1

可能重复的你知道有多大300!是吗?你是在尝试构建吗?我想你实际上想要的是组合,或者,一般来说是子集。有2^300种可能性,这仍然是太多了,但它与排列不同。。。你到底需要什么样的结果?列的任何给定子集出现的情况有多少?@Rachel您只需要每个排列的计数?您希望这个数据帧的输出是什么,您能澄清一下吗?这已经很有用了,但没有给我想要的输出。我可以创建一个表格,显示所有子集以及自动查找它们的频率吗?谢谢!那看起来太完美了!